]> git.saurik.com Git - wxWidgets.git/commitdiff
add a simple benchmark for wx and iconv converters benchmarking
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 17 Oct 2008 12:24:24 +0000 (12:24 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 17 Oct 2008 12:24:24 +0000 (12:24 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

tests/benchmarks/Makefile.in
tests/benchmarks/bench.bkl
tests/benchmarks/bench.dsp
tests/benchmarks/bench.vcproj
tests/benchmarks/makefile.bcc
tests/benchmarks/makefile.gcc
tests/benchmarks/makefile.vc
tests/benchmarks/makefile.wat
tests/benchmarks/mbconv.cpp [new file with mode: 0644]

index 98b51ded8b9d42cc68c0029cd9b7c637e2feb20f..40cc91cb953815477e43b57d6cd0cc75993f7b0d 100644 (file)
@@ -47,6 +47,7 @@ BENCH_OBJECTS =  \
        bench_htmlpars.o \
        bench_htmltag.o \
        bench_ipcclient.o \
+       bench_mbconv.o \
        bench_strings.o \
        bench_tls.o
 
@@ -136,6 +137,9 @@ bench_htmltag.o: $(srcdir)/htmlparser/htmltag.cpp
 bench_ipcclient.o: $(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
        $(CXXC) -c -o $@ $(BENCH_CXXFLAGS) $(srcdir)/strings.cpp
 
index d24d9fb401abeca1b07619fc6f0d7e81487b6288..819ab0bd419b0e277569e1d69cdf53d7131bb191 100644 (file)
@@ -14,6 +14,7 @@
             htmlparser/htmlpars.cpp
             htmlparser/htmltag.cpp
             ipcclient.cpp
+            mbconv.cpp
             strings.cpp
             tls.cpp
         </sources>
index 193aa2597eb44ca26d60a13e678e84501bbb25f2..2789d23d17b396dd4628244e0154e26b5e0b5728 100644 (file)
@@ -251,6 +251,10 @@ SOURCE=.\ipcclient.cpp
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=.\mbconv.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=.\strings.cpp\r
 # End Source File\r
 # Begin Source File\r
index 4abc057ec9d0f95c4c3ab51026cee47fda69a478..bc97321870b2cc8500e742be7f78448368b56100 100644 (file)
                        <File\r
                                RelativePath=".\ipcclient.cpp">\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\mbconv.cpp">\r
+                       </File>\r
                        <File\r
                                RelativePath=".\strings.cpp">\r
                        </File>\r
index 8328ca9ccbe0a4bfb54a672a7783b85238f548d8..855190d6ff1d0c5b810d8555e6e98e73544aee48 100644 (file)
@@ -39,6 +39,7 @@ BENCH_OBJECTS =  \
        $(OBJS)\bench_htmlpars.obj \
        $(OBJS)\bench_htmltag.obj \
        $(OBJS)\bench_ipcclient.obj \
+       $(OBJS)\bench_mbconv.obj \
        $(OBJS)\bench_strings.obj \
        $(OBJS)\bench_tls.obj
 
@@ -212,6 +213,9 @@ $(OBJS)\bench_htmltag.obj: .\htmlparser\htmltag.cpp
 $(OBJS)\bench_ipcclient.obj: .\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
        $(CXX) -q -c -P -o$@ $(BENCH_CXXFLAGS) .\strings.cpp
 
index c8c7b7f1d736cede5516750b9215bef4cf5ef733..91f3c43b6c87f32c38d8529c16bdaa6aa006a0f5 100644 (file)
@@ -32,6 +32,7 @@ BENCH_OBJECTS =  \
        $(OBJS)\bench_htmlpars.o \
        $(OBJS)\bench_htmltag.o \
        $(OBJS)\bench_ipcclient.o \
+       $(OBJS)\bench_mbconv.o \
        $(OBJS)\bench_strings.o \
        $(OBJS)\bench_tls.o
 
@@ -202,6 +203,9 @@ $(OBJS)\bench_htmltag.o: ./htmlparser/htmltag.cpp
 $(OBJS)\bench_ipcclient.o: ./ipcclient.cpp
        $(CXX) -c -o $@ $(BENCH_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\bench_mbconv.o: ./mbconv.cpp
+       $(CXX) -c -o $@ $(BENCH_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\bench_strings.o: ./strings.cpp
        $(CXX) -c -o $@ $(BENCH_CXXFLAGS) $(CPPDEPS) $<
 
index fb7cb3e559f0f47f3f22105a7cfa5b95619a3910..13fcddd7a07ff229135a7738f6a8d65d50a2723e 100644 (file)
@@ -33,6 +33,7 @@ BENCH_OBJECTS =  \
        $(OBJS)\bench_htmlpars.obj \
        $(OBJS)\bench_htmltag.obj \
        $(OBJS)\bench_ipcclient.obj \
+       $(OBJS)\bench_mbconv.obj \
        $(OBJS)\bench_strings.obj \
        $(OBJS)\bench_tls.obj
 
@@ -269,6 +270,9 @@ $(OBJS)\bench_htmltag.obj: .\htmlparser\htmltag.cpp
 $(OBJS)\bench_ipcclient.obj: .\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
        $(CXX) /c /nologo /TP /Fo$@ $(BENCH_CXXFLAGS) .\strings.cpp
 
index 3e3b9b01d42660530b9567c9da3d9fd15995dffd..b14102eb7edd8ec83b63c62b22a54887745f8e41 100644 (file)
@@ -218,6 +218,7 @@ BENCH_OBJECTS =  &
        $(OBJS)\bench_htmlpars.obj &
        $(OBJS)\bench_htmltag.obj &
        $(OBJS)\bench_ipcclient.obj &
+       $(OBJS)\bench_mbconv.obj &
        $(OBJS)\bench_strings.obj &
        $(OBJS)\bench_tls.obj
 
@@ -266,6 +267,9 @@ $(OBJS)\bench_htmltag.obj :  .AUTODEPEND .\htmlparser\htmltag.cpp
 $(OBJS)\bench_ipcclient.obj :  .AUTODEPEND .\ipcclient.cpp
        $(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
        $(CXX) -bt=nt -zq -fo=$^@ $(BENCH_CXXFLAGS) $<
 
diff --git a/tests/benchmarks/mbconv.cpp b/tests/benchmarks/mbconv.cpp
new file mode 100644 (file)
index 0000000..a3e5130
--- /dev/null
@@ -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"));
+}
+