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