summaryrefslogtreecommitdiff
path: root/Demos
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2016-04-12 21:24:14 +0200
committerStefan Behnel <stefan_ml@behnel.de>2016-04-12 21:24:14 +0200
commita0d67e2fdafabde83af8675f670a4f5939a513a7 (patch)
treef264bdbbd720dc17e6377f119847f6bc78eb1916 /Demos
parenta9d2637a9e957d6bb41c1cb86c2eea2a3228e980 (diff)
downloadcython-a0d67e2fdafabde83af8675f670a4f5939a513a7.tar.gz
add a simple benchmark for f-strings
Diffstat (limited to 'Demos')
-rw-r--r--Demos/benchmarks/fstrings.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/Demos/benchmarks/fstrings.py b/Demos/benchmarks/fstrings.py
new file mode 100644
index 000000000..5cf46de53
--- /dev/null
+++ b/Demos/benchmarks/fstrings.py
@@ -0,0 +1,57 @@
+# coding=utf-8
+# NOTE: requires Python 3.6 or later if not compiled with Cython
+
+from time import time
+
+import cython
+
+
+@cython.locals(x=int, n=int)
+def run():
+ t0 = time()
+
+ f = 1.0
+ x = 2
+ n = 5
+ s = 'abc'
+ u = u'üöä'
+
+ for i in range(100):
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+ f"{n}oo{n*10}{f:.2}--{n:2}{n:5}oo{i}"
+
+ f"{n}oo{n*10}{f:3.2}--{n:2}{n:5}oo{i}{s}"
+ f"{n}oo{n*10}{f:5.2}--{n:2}{n:5}oo{i}{u}"
+ f"{n}oo{n*10}{f:2.2}--{n:2}{n:5}oo{i}{s}xx{u}"
+
+ tk = time()
+ return tk - t0
+
+
+def main(n):
+ run() # warmup
+ times = []
+ for i in range(n):
+ times.append(run())
+ return times
+
+
+if __name__ == "__main__":
+ import optparse
+ import util
+ parser = optparse.OptionParser(
+ usage="%prog [options]",
+ description="Test the performance of fstring literal formatting")
+ util.add_standard_options_to(parser)
+ options, args = parser.parse_args()
+
+ util.run_benchmark(options, options.num_runs, main)