Last active
April 16, 2023 08:36
-
-
Save al1p-R/a3d205aeab52c4a885eb918c2ceba4e0 to your computer and use it in GitHub Desktop.
Benchmarking different string replace methods - example from @MarcinJuraszek ported to Python by ChatGPT - https://gist.github.com/MarcinJuraszek/c1437d925548561ba210a1c6ed144452
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Based on https://gist.github.com/MarcinJuraszek/c1437d925548561ba210a1c6ed144452 from @MarcinJuraszek | |
# Ported to python by ChatGPT 4 | |
''' | |
RESULTS | |
Replace using regex: | |
0.02475070800028334 | |
Replace using multiple replace calls: | |
0.0008895419996406417 | |
Replace using split and join: | |
0.014065958999708528 | |
''' | |
import re | |
import timeit | |
input_text = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec eros magna. Sed eros tortor, aliquam ac ultrices vel, fringilla sit amet nisl. Maecenas ultricies, enim luctus convallis euismod, tortor massa porttitor eros, eget iaculis enim nisl non dui. Maecenas aliquet magna et fau;cibus elementum. Cras vehicula, lorem ac auctor lobortis, arcu enim euismod dolor, ut commodo turpis lacus nec nisi. Etiam volutpat et lorem nec mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla eget semper nisl. Nullam tristique placerat neque eu congue. Sed fringilla leo vel nulla rhoncus sollicitudin. Aliquam erat volutpat. Fusce posuere enim eu metus efficitur, feugiat lobortis orci volutpat. Duis tempor felis non leo venenatis, nec venenatis sapien pulvinar. | |
... | |
""" | |
separators = [' ', ';', ',', '\r', '\t', '\n'] | |
new_val = '\n' | |
pattern = re.compile(r"[;,\t\r ]|[\n]{2}") | |
def replace_using_regex(): | |
return pattern.sub(new_val, input_text) | |
def replace_using_multiple_replace_calls(): | |
result = input_text | |
for separator in separators: | |
result = result.replace(separator, new_val) | |
return result | |
def replace_using_split_and_join(): | |
temp = re.split('|'.join(map(re.escape, separators)), input_text) | |
return new_val.join(temp) | |
if __name__ == '__main__': | |
print('Replace using regex:') | |
print(timeit.timeit('replace_using_regex()', globals=globals(), number=1000)) | |
print('Replace using multiple replace calls:') | |
print(timeit.timeit('replace_using_multiple_replace_calls()', globals=globals(), number=1000)) | |
print('Replace using split and join:') | |
print(timeit.timeit('replace_using_split_and_join()', globals=globals(), number=1000)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment