Author: fijal
Branch: unicode-utf8
Changeset: r93270:2d37182f156f
Date: 2017-12-03 22:25 +0100
http://bitbucket.org/pypy/pypy/changeset/2d37182f156f/

Log:    some benchmarks

diff --git a/targetunicode-bench.py b/targetunicode-bench.py
new file mode 100644
--- /dev/null
+++ b/targetunicode-bench.py
@@ -0,0 +1,45 @@
+
+from rpython.rlib import rutf8
+from rpython.rlib.rstring import StringBuilder, UnicodeBuilder
+from pypy.module.unicodedata import unicodedb
+
+l = ["u" * 100 + str(i) for i in range(100)]
+u_l = [unicode("u" * 100 + str(i)) for i in range(100)]
+
+def descr_upper(s):
+    builder = rutf8.Utf8StringBuilder(len(s))
+    for ch in rutf8.Utf8StringIterator(s):
+        ch = unicodedb.toupper(ch)
+        builder.append_code(ch)
+    return builder.build()
+descr_upper._dont_inline_ = True
+
+def descr_upper_s(s):
+    builder = StringBuilder(len(s))
+    for i in range(len(s)):
+        ch = s[i]
+        builder.append(chr(unicodedb.toupper(ord(ch))))
+    return builder.build()
+
+def descr_upper_u(s):
+    builder = UnicodeBuilder(len(s))
+    for ch in s:
+        builder.append(unichr(unicodedb.toupper(ord(ch))))
+    return builder.build()
+
+def main(argv):
+    res_l = ["foo"]
+    res_l_2 = [u"foo"]
+    if len(argv) > 2 and argv[2] == "s":
+        for i in range(int(argv[1])):
+            res_l[0] = descr_upper_s(l[i % 100])
+    if len(argv) > 2 and argv[2] == "u":
+        for i in range(int(argv[1])):
+            res_l_2[0] = descr_upper_u(u_l[i % 100])
+    else:
+        for i in range(int(argv[1])):
+            res_l[0] = descr_upper(l[i % 100])
+    return 0
+
+def target(*args):
+    return main
diff --git a/unicode-bench.py b/unicode-bench.py
new file mode 100644
--- /dev/null
+++ b/unicode-bench.py
@@ -0,0 +1,48 @@
+
+import time
+
+LGT = 100
+
+unicodes = [unicode("u" * LGT + str(i)) for i in range(100)]
+non_ascii_unicodes = [u"u" * LGT + unicode(i) + u"å" for i in range(100)]
+
+RANGE = 250000000 // LGT
+
+def upper(main_l):
+    l = [None] * 1000
+    for i in xrange(RANGE):
+        l[i % 1000] = main_l[i % 100].upper()
+
+def lower(main_l):
+    l = [None]
+    for i in xrange(RANGE):
+        l[0] = main_l[i % 100].lower()
+
+def islower(main_l):
+    l = [None]
+    for i in xrange(RANGE * 3):
+        l[0] = main_l[i % 100].islower()
+
+def title(main_l):
+    l = [None]
+    for i in xrange(RANGE):
+        l[0] = main_l[i % 100].title()
+
+def add(main_l):
+    l = [None]
+    for i in xrange(RANGE):
+        l[0] = main_l[i % 100] + u"foo"
+
+def find(main_l):
+    l = [None]
+    for i in xrange(RANGE):
+        l[0] = main_l[i % 100].find(u"foo")
+
+for func in [upper]:#, lower, isupper, islower]:
+    t0 = time.time()
+    func(unicodes)
+    t1 = time.time()
+    print "ascii %s %.2f" % (func.__name__, t1 - t0)
+    func(non_ascii_unicodes)
+    t2 = time.time()
+    print "non-ascii %s %.2f" % (func.__name__, t2 - t1)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to