add a simple benchmark for wx and iconv converters benchmarking
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -47,6 +47,7 @@ BENCH_OBJECTS = \
|
|||||||
bench_htmlpars.o \
|
bench_htmlpars.o \
|
||||||
bench_htmltag.o \
|
bench_htmltag.o \
|
||||||
bench_ipcclient.o \
|
bench_ipcclient.o \
|
||||||
|
bench_mbconv.o \
|
||||||
bench_strings.o \
|
bench_strings.o \
|
||||||
bench_tls.o
|
bench_tls.o
|
||||||
|
|
||||||
@@ -136,6 +137,9 @@ bench_htmltag.o: $(srcdir)/htmlparser/htmltag.cpp
|
|||||||
bench_ipcclient.o: $(srcdir)/ipcclient.cpp
|
bench_ipcclient.o: $(srcdir)/ipcclient.cpp
|
||||||
$(CXXC) -c -o $@ $(BENCH_CXXFLAGS) $(srcdir)/ipcclient.cpp
|
$(CXXC) -c -o $@ $(BENCH_CXXFLAGS) $(srcdir)/ipcclient.cpp
|
||||||
|
|
||||||
|
bench_mbconv.o: $(srcdir)/mbconv.cpp
|
||||||
|
$(CXXC) -c -o $@ $(BENCH_CXXFLAGS) $(srcdir)/mbconv.cpp
|
||||||
|
|
||||||
bench_strings.o: $(srcdir)/strings.cpp
|
bench_strings.o: $(srcdir)/strings.cpp
|
||||||
$(CXXC) -c -o $@ $(BENCH_CXXFLAGS) $(srcdir)/strings.cpp
|
$(CXXC) -c -o $@ $(BENCH_CXXFLAGS) $(srcdir)/strings.cpp
|
||||||
|
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
htmlparser/htmlpars.cpp
|
htmlparser/htmlpars.cpp
|
||||||
htmlparser/htmltag.cpp
|
htmlparser/htmltag.cpp
|
||||||
ipcclient.cpp
|
ipcclient.cpp
|
||||||
|
mbconv.cpp
|
||||||
strings.cpp
|
strings.cpp
|
||||||
tls.cpp
|
tls.cpp
|
||||||
</sources>
|
</sources>
|
||||||
|
@@ -251,6 +251,10 @@ SOURCE=.\ipcclient.cpp
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\mbconv.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\strings.cpp
|
SOURCE=.\strings.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@@ -537,6 +537,9 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath=".\ipcclient.cpp">
|
RelativePath=".\ipcclient.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\mbconv.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\strings.cpp">
|
RelativePath=".\strings.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
@@ -39,6 +39,7 @@ BENCH_OBJECTS = \
|
|||||||
$(OBJS)\bench_htmlpars.obj \
|
$(OBJS)\bench_htmlpars.obj \
|
||||||
$(OBJS)\bench_htmltag.obj \
|
$(OBJS)\bench_htmltag.obj \
|
||||||
$(OBJS)\bench_ipcclient.obj \
|
$(OBJS)\bench_ipcclient.obj \
|
||||||
|
$(OBJS)\bench_mbconv.obj \
|
||||||
$(OBJS)\bench_strings.obj \
|
$(OBJS)\bench_strings.obj \
|
||||||
$(OBJS)\bench_tls.obj
|
$(OBJS)\bench_tls.obj
|
||||||
|
|
||||||
@@ -212,6 +213,9 @@ $(OBJS)\bench_htmltag.obj: .\htmlparser\htmltag.cpp
|
|||||||
$(OBJS)\bench_ipcclient.obj: .\ipcclient.cpp
|
$(OBJS)\bench_ipcclient.obj: .\ipcclient.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(BENCH_CXXFLAGS) .\ipcclient.cpp
|
$(CXX) -q -c -P -o$@ $(BENCH_CXXFLAGS) .\ipcclient.cpp
|
||||||
|
|
||||||
|
$(OBJS)\bench_mbconv.obj: .\mbconv.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(BENCH_CXXFLAGS) .\mbconv.cpp
|
||||||
|
|
||||||
$(OBJS)\bench_strings.obj: .\strings.cpp
|
$(OBJS)\bench_strings.obj: .\strings.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(BENCH_CXXFLAGS) .\strings.cpp
|
$(CXX) -q -c -P -o$@ $(BENCH_CXXFLAGS) .\strings.cpp
|
||||||
|
|
||||||
|
@@ -32,6 +32,7 @@ BENCH_OBJECTS = \
|
|||||||
$(OBJS)\bench_htmlpars.o \
|
$(OBJS)\bench_htmlpars.o \
|
||||||
$(OBJS)\bench_htmltag.o \
|
$(OBJS)\bench_htmltag.o \
|
||||||
$(OBJS)\bench_ipcclient.o \
|
$(OBJS)\bench_ipcclient.o \
|
||||||
|
$(OBJS)\bench_mbconv.o \
|
||||||
$(OBJS)\bench_strings.o \
|
$(OBJS)\bench_strings.o \
|
||||||
$(OBJS)\bench_tls.o
|
$(OBJS)\bench_tls.o
|
||||||
|
|
||||||
@@ -202,6 +203,9 @@ $(OBJS)\bench_htmltag.o: ./htmlparser/htmltag.cpp
|
|||||||
$(OBJS)\bench_ipcclient.o: ./ipcclient.cpp
|
$(OBJS)\bench_ipcclient.o: ./ipcclient.cpp
|
||||||
$(CXX) -c -o $@ $(BENCH_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(BENCH_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\bench_mbconv.o: ./mbconv.cpp
|
||||||
|
$(CXX) -c -o $@ $(BENCH_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\bench_strings.o: ./strings.cpp
|
$(OBJS)\bench_strings.o: ./strings.cpp
|
||||||
$(CXX) -c -o $@ $(BENCH_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(BENCH_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
@@ -33,6 +33,7 @@ BENCH_OBJECTS = \
|
|||||||
$(OBJS)\bench_htmlpars.obj \
|
$(OBJS)\bench_htmlpars.obj \
|
||||||
$(OBJS)\bench_htmltag.obj \
|
$(OBJS)\bench_htmltag.obj \
|
||||||
$(OBJS)\bench_ipcclient.obj \
|
$(OBJS)\bench_ipcclient.obj \
|
||||||
|
$(OBJS)\bench_mbconv.obj \
|
||||||
$(OBJS)\bench_strings.obj \
|
$(OBJS)\bench_strings.obj \
|
||||||
$(OBJS)\bench_tls.obj
|
$(OBJS)\bench_tls.obj
|
||||||
|
|
||||||
@@ -269,6 +270,9 @@ $(OBJS)\bench_htmltag.obj: .\htmlparser\htmltag.cpp
|
|||||||
$(OBJS)\bench_ipcclient.obj: .\ipcclient.cpp
|
$(OBJS)\bench_ipcclient.obj: .\ipcclient.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(BENCH_CXXFLAGS) .\ipcclient.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(BENCH_CXXFLAGS) .\ipcclient.cpp
|
||||||
|
|
||||||
|
$(OBJS)\bench_mbconv.obj: .\mbconv.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(BENCH_CXXFLAGS) .\mbconv.cpp
|
||||||
|
|
||||||
$(OBJS)\bench_strings.obj: .\strings.cpp
|
$(OBJS)\bench_strings.obj: .\strings.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(BENCH_CXXFLAGS) .\strings.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(BENCH_CXXFLAGS) .\strings.cpp
|
||||||
|
|
||||||
|
@@ -218,6 +218,7 @@ BENCH_OBJECTS = &
|
|||||||
$(OBJS)\bench_htmlpars.obj &
|
$(OBJS)\bench_htmlpars.obj &
|
||||||
$(OBJS)\bench_htmltag.obj &
|
$(OBJS)\bench_htmltag.obj &
|
||||||
$(OBJS)\bench_ipcclient.obj &
|
$(OBJS)\bench_ipcclient.obj &
|
||||||
|
$(OBJS)\bench_mbconv.obj &
|
||||||
$(OBJS)\bench_strings.obj &
|
$(OBJS)\bench_strings.obj &
|
||||||
$(OBJS)\bench_tls.obj
|
$(OBJS)\bench_tls.obj
|
||||||
|
|
||||||
@@ -266,6 +267,9 @@ $(OBJS)\bench_htmltag.obj : .AUTODEPEND .\htmlparser\htmltag.cpp
|
|||||||
$(OBJS)\bench_ipcclient.obj : .AUTODEPEND .\ipcclient.cpp
|
$(OBJS)\bench_ipcclient.obj : .AUTODEPEND .\ipcclient.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(BENCH_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(BENCH_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\bench_mbconv.obj : .AUTODEPEND .\mbconv.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(BENCH_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\bench_strings.obj : .AUTODEPEND .\strings.cpp
|
$(OBJS)\bench_strings.obj : .AUTODEPEND .\strings.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(BENCH_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(BENCH_CXXFLAGS) $<
|
||||||
|
|
||||||
|
79
tests/benchmarks/mbconv.cpp
Normal file
79
tests/benchmarks/mbconv.cpp
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: tests/benchmarks/mbconv.cpp
|
||||||
|
// Purpose: MB<->WC conversion benchmarks
|
||||||
|
// Author: Vadim Zeitlin
|
||||||
|
// Created: 2008-10-17
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "wx/strconv.h"
|
||||||
|
#include "wx/string.h"
|
||||||
|
|
||||||
|
#include "bench.h"
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
const wchar_t *TEST_STRING =
|
||||||
|
L"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod"
|
||||||
|
L"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim"
|
||||||
|
L"veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea"
|
||||||
|
L"commodo consequat. Duis aute irure dolor in reprehenderit in voluptate"
|
||||||
|
L"velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint"
|
||||||
|
L"occaecat cupidatat non proident, sunt in culpa qui officia deserunt"
|
||||||
|
L"mollit anim id est laborum."
|
||||||
|
;
|
||||||
|
|
||||||
|
// just compute the length of the resulting multibyte string
|
||||||
|
bool ComputeMBLength(const wxMBConv& conv)
|
||||||
|
{
|
||||||
|
// we suppose a fixed length encoding here (which happens to cover UTF-8
|
||||||
|
// too as long as the test string is ASCII)
|
||||||
|
return conv.FromWChar(NULL, 0, TEST_STRING)
|
||||||
|
== (wcslen(TEST_STRING) + 1)*conv.GetMBNulLen();
|
||||||
|
}
|
||||||
|
|
||||||
|
// perform the conversion
|
||||||
|
bool ConvertToMB(const wxMBConv& conv)
|
||||||
|
{
|
||||||
|
const size_t outlen = (wcslen(TEST_STRING) + 1)*conv.GetMBNulLen();
|
||||||
|
wxCharBuffer buf(outlen - 1); // it adds 1 internally
|
||||||
|
return conv.FromWChar(buf.data(), outlen, TEST_STRING) == outlen;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
BENCHMARK_FUNC(UTF16InitWX)
|
||||||
|
{
|
||||||
|
wxMBConvUTF16 conv;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
BENCHMARK_FUNC(UTF16InitSys)
|
||||||
|
{
|
||||||
|
wxCSConv conv("UTF-16LE");
|
||||||
|
return conv.IsOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
BENCHMARK_FUNC(UTF16LenWX)
|
||||||
|
{
|
||||||
|
return ComputeMBLength(wxMBConvUTF16());
|
||||||
|
}
|
||||||
|
|
||||||
|
BENCHMARK_FUNC(UTF16LenSys)
|
||||||
|
{
|
||||||
|
return ComputeMBLength(wxCSConv("UTF-16LE"));
|
||||||
|
}
|
||||||
|
|
||||||
|
BENCHMARK_FUNC(UTF16WX)
|
||||||
|
{
|
||||||
|
return ConvertToMB(wxMBConvUTF16());
|
||||||
|
}
|
||||||
|
|
||||||
|
BENCHMARK_FUNC(UTF16Sys)
|
||||||
|
{
|
||||||
|
return ConvertToMB(wxCSConv("UTF-16LE"));
|
||||||
|
}
|
||||||
|
|
Reference in New Issue
Block a user