lcompilers / lpython

Python compiler
https://lpython.org/
Other
1.37k stars 157 forks source link

Improvement: Assignment `string2: str = string1 * N` takes a very long time for a large integer N #2616

Closed kmr-srbh closed 3 months ago

kmr-srbh commented 3 months ago

N = 106

string1: str = "a"
string2: str = string1 * 10**6

CPython

(base) saurabh-kumar@Awadh:~/Projects/System/lpython$ time python3 ./examples/example.py

real    0m0.038s
user    0m0.021s
sys     0m0.017s

LPython

(base) saurabh-kumar@Awadh:~/Projects/System/lpython$ time ./src/bin/lpython ./examples/example.py

real    0m29.449s
user    0m29.396s
sys     0m0.049s

N = 107

string1: str = "a"
string2: str = string1 * 10**7

CPython

(base) saurabh-kumar@Awadh:~/Projects/System/lpython$ time python3 ./examples/example.py

real    0m0.055s
user    0m0.030s
sys     0m0.025s

LPython (force break)

(base) saurabh-kumar@Awadh:~/Projects/System/lpython$ time ./src/bin/lpython ./examples/example.py
^C
real    9m24.159s
user    9m23.510s
sys     0m0.144s