From 324049500482c5b26ca120f6f8ed0dbeff0439d0 Mon Sep 17 00:00:00 2001 From: 97littleleaf11 <97littleleaf11@gmail.com> Date: Mon, 21 Jun 2021 16:55:56 +0800 Subject: [PATCH 1/4] Add seperated tests for three methods --- microbenchmarks/strings.py | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/microbenchmarks/strings.py b/microbenchmarks/strings.py index 9f8e41b..1f7b440 100644 --- a/microbenchmarks/strings.py +++ b/microbenchmarks/strings.py @@ -75,6 +75,57 @@ def str_format() -> None: assert n == 10434000, n +@benchmark +def str_format_percent_operator() -> None: + a = [] + tmp_str = "Foobar" + for i in range(1000): + a.append('%s-%d' % (tmp_str, i)) + a.append('%d %f str' % (i, i * 2.0)) + + n = 0 + for i in range(100): + for s in a: + n += len("foobar %s stuff" % s) + ss = "foobar %s stuff" % s + n += len("%d-%s-%s" % (i, s, ss)) + assert n == 14447500, n + + +@benchmark +def str_format_format_method() -> None: + a = [] + tmp_str = "Foobar" + for i in range(1000): + a.append('{}-{}'.format(tmp_str, i)) + a.append('{} {} str'.format(i, i * 2.0)) + + n = 0 + for i in range(100): + for s in a: + n += len("foobar {} stuff".format(s)) + ss = "foobar {} stuff".format(s) + n += len("{}-{}-{}".format(i, s, ss)) + assert n == 12947500, n + + +@benchmark +def str_format_fstring() -> None: + a = [] + tmp_str = "Foobar" + for i in range(1000): + a.append(f'{tmp_str}-{i}') + a.append(f'{i} {i*2.0} str') + + n = 0 + for i in range(100): + for s in a: + n += len(f"foobar {s} stuff") + ss = f"foobar {s} stuff" + n += len(f"{i}-{s}-{ss}") + assert n == 12947500, n + + @benchmark def str_slicing() -> None: a = [] From 3b2931b35a939adeb878ffa672a1e0f78f96eb28 Mon Sep 17 00:00:00 2001 From: 97littleleaf11 <97littleleaf11@gmail.com> Date: Mon, 21 Jun 2021 17:04:32 +0800 Subject: [PATCH 2/4] Add more %s --- microbenchmarks/strings.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/microbenchmarks/strings.py b/microbenchmarks/strings.py index 1f7b440..77af690 100644 --- a/microbenchmarks/strings.py +++ b/microbenchmarks/strings.py @@ -80,6 +80,8 @@ def str_format_percent_operator() -> None: a = [] tmp_str = "Foobar" for i in range(1000): + for _ in range(5): + a.append('%s' % tmp_str) a.append('%s-%d' % (tmp_str, i)) a.append('%d %f str' % (i, i * 2.0)) @@ -97,6 +99,8 @@ def str_format_format_method() -> None: a = [] tmp_str = "Foobar" for i in range(1000): + for _ in range(5): + a.append('{}'.format(tmp_str)) a.append('{}-{}'.format(tmp_str, i)) a.append('{} {} str'.format(i, i * 2.0)) @@ -114,6 +118,8 @@ def str_format_fstring() -> None: a = [] tmp_str = "Foobar" for i in range(1000): + for _ in range(5): + a.append(f'{tmp_str}') a.append(f'{tmp_str}-{i}') a.append(f'{i} {i*2.0} str') From b289f4c6ed3525e25c1bb5e6997ed3af76ec3483 Mon Sep 17 00:00:00 2001 From: 97littleleaf11 <97littleleaf11@gmail.com> Date: Mon, 21 Jun 2021 17:14:25 +0800 Subject: [PATCH 3/4] Fix assertion --- microbenchmarks/strings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/microbenchmarks/strings.py b/microbenchmarks/strings.py index 77af690..9ae386a 100644 --- a/microbenchmarks/strings.py +++ b/microbenchmarks/strings.py @@ -110,7 +110,7 @@ def str_format_format_method() -> None: n += len("foobar {} stuff".format(s)) ss = "foobar {} stuff".format(s) n += len("{}-{}-{}".format(i, s, ss)) - assert n == 12947500, n + assert n == 36897500, n @benchmark @@ -129,7 +129,7 @@ def str_format_fstring() -> None: n += len(f"foobar {s} stuff") ss = f"foobar {s} stuff" n += len(f"{i}-{s}-{ss}") - assert n == 12947500, n + assert n == 36897500, n @benchmark From 47d510cf451bdee7a2feb37e52c7a32462088359 Mon Sep 17 00:00:00 2001 From: 97littleleaf11 <97littleleaf11@gmail.com> Date: Mon, 21 Jun 2021 17:16:31 +0800 Subject: [PATCH 4/4] Fix assertion --- microbenchmarks/strings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microbenchmarks/strings.py b/microbenchmarks/strings.py index 9ae386a..7fb8c84 100644 --- a/microbenchmarks/strings.py +++ b/microbenchmarks/strings.py @@ -91,7 +91,7 @@ def str_format_percent_operator() -> None: n += len("foobar %s stuff" % s) ss = "foobar %s stuff" % s n += len("%d-%s-%s" % (i, s, ss)) - assert n == 14447500, n + assert n == 38397500, n @benchmark