diff --git a/benchmarks/HashBench/HashBench.cpp b/benchmarks/HashBench/HashBench.cpp index dc49321e9..65dad490e 100644 --- a/benchmarks/HashBench/HashBench.cpp +++ b/benchmarks/HashBench/HashBench.cpp @@ -4,18 +4,36 @@ using namespace Upp; #define LDUMP(x) x -template -String AsHash(const T& x) -{ - Sha1Stream s; - const_cast(x).Serialize(s); - return s.FinishString(); -} - CONSOLE_APP_MAIN { - Pointf x(1, 2); - DDUMP(AsHash(x)); - DDUMP(AsHash(Pointf(1, 2))); - DDUMP(AsHash(Pointf(2, 2))); + String s; + for(int i = 0; i < 1000000; i++) + s.Cat(Random()); + + for(int i = 0; i < 100; i++) { + { + RTIMING("SHA1"); + SHA1String(s); + } + { + RTIMING("SHA256"); + SHA256String(s); + } + { + RTIMING("MD5"); + MD5String(s); + } + { + RTIMING("xxHash"); + xxHash(s); + } + { + RTIMING("Save"); + SaveFile("c:/xxx/delete.bin", s); + } + { + RTIMING("Load"); + LoadFile("c:/xxx/delete.bin"); + } + } } diff --git a/benchmarks/utf/utf.cpp b/benchmarks/utf/utf.cpp new file mode 100644 index 000000000..62b3364f0 --- /dev/null +++ b/benchmarks/utf/utf.cpp @@ -0,0 +1,33 @@ +#include + +using namespace Upp; + +CONSOLE_APP_MAIN +{ + Vector data; + for(int i = 0; i < 20000; i++) + data.Add(Random(100)); + + String utf8 = ToUtf8(data.begin(), 200000); + WString utf16 = utf8.ToWString(); + + int n = 0; + const int N = 2000; + for(int q = 0; q < N; q++) { + RTIMING("utf8 -> utf32"); + n += ToUtf32(utf8).GetCount(); + } + for(int q = 0; q < N; q++) { + RTIMING("utf8 -> utf16"); + n += ToUtf16(utf8).GetCount(); + } + for(int q = 0; q < N; q++) { + RTIMING("utf32 -> utf8"); + n += ToUtf8(data.begin(), 200000).GetCount(); + } + for(int q = 0; q < N; q++) { + RTIMING("utf16 -> utf8"); + n += utf16.ToString().GetCount(); + } + RDUMP(n); +} diff --git a/benchmarks/utf/utf.upp b/benchmarks/utf/utf.upp new file mode 100644 index 000000000..23f95e962 --- /dev/null +++ b/benchmarks/utf/utf.upp @@ -0,0 +1,9 @@ +uses + Core; + +file + utf.cpp; + +mainconfig + "" = ""; + diff --git a/benchmarks/utf8transcoding/utf8transcoding.cpp b/benchmarks/utf8transcoding/utf8transcoding.cpp new file mode 100644 index 000000000..fc7029a80 --- /dev/null +++ b/benchmarks/utf8transcoding/utf8transcoding.cpp @@ -0,0 +1,17 @@ +#include + +using namespace Upp; + +CONSOLE_APP_MAIN +{ + WString x; + for(int i = 0; i < 1000000; i++) + x.Cat(Random(20000)); + + String utf8 = x.ToString(); + + for(int i = 0; i < 100; i++) { + RTIMING("conversion"); + utf8.ToWString(); + } +} diff --git a/benchmarks/utf8transcoding/utf8transcoding.upp b/benchmarks/utf8transcoding/utf8transcoding.upp new file mode 100644 index 000000000..dcd927c0d --- /dev/null +++ b/benchmarks/utf8transcoding/utf8transcoding.upp @@ -0,0 +1,9 @@ +uses + Core; + +file + utf8transcoding.cpp; + +mainconfig + "" = ""; +