История изменений
Исправление CrX, (текущая версия) :
Конкретно в этом примере с f-строкой лишь чуть-чуть быстрее получается:
>>> y = 1
>>> starttime = time.time(); z = ["x + y = " + str(x + y) for x in range(10_000_000)]; print(time.time() - starttime)
1.3884761333465576
>>> starttime = time.time(); z = [f"x + y = {x+y}" for x in range(10_000_000)]; print(time.time() - starttime)
1.2255635261535645
НО! Стоит чуть-чуть усложнить пример, и уже:
>>> y = 1
>>> starttime = time.time(); z = [f"x + y = {x + y}; where x = {x} and y = {y}" for x in range(10_000_000)]; print(time.time() - starttime)
2.243973731994629
>>> starttime = time.time(); z = [f"x + y = {x + y}; where x = {x} and y = {y}" for x in range(10_000_000)]; print(time.time() - starttime)
2.239164352416992
>>> starttime = time.time(); z = ["x + y = " + str(x + y) + "; where x = " + str(x) + " and y = " + str(y) for x in range(10_000_000)]; print(time.time() - starttime)
3.5466392040252686
>>> starttime = time.time(); z = ["x + y = " + str(x + y) + "; where x = " + str(x) + " and y = " + str(y) for x in range(10_000_000)]; print(time.time() - starttime)
3.5206360816955566
И разница уже весьма ощутимая (в читаемости, кстати, тоже, а в писабильности ещё больше).
Исправление CrX, :
Конкретно в этом примере с f-строкой лишь чуть-чуть быстрее получается:
>>> y = 1
>>> starttime = time.time(); z = ["x + y = " + str(x + y) for x in range(10_000_000)]; print(time.time() - starttime)
1.3884761333465576
>>> starttime = time.time(); z = [f"x + y = {x+y}" for x in range(10_000_000)]; print(time.time() - starttime)
1.2255635261535645
НО! Стоит чуть-чуть усложнить пример, и уже:
>>> y = 1
>>> starttime = time.time(); z = [f"x + y = {x + y}; where x = {x} and y = {y}" for x in range(10_000_000)]; print(time.time() - starttime)
2.243973731994629
>>> starttime = time.time(); z = [f"x + y = {x + y}; where x = {x} and y = {y}" for x in range(10_000_000)]; print(time.time() - starttime)
2.239164352416992
>>> starttime = time.time(); z = ["x + y = " + str(x + y) + "; where x = " + str(x) + " and y = " + str(y) for x in range(10_000_000)]; print(time.time() - starttime)
3.5466392040252686
>>> starttime = time.time(); z = ["x + y = " + str(x + y) + "; where x = " + str(x) + " and y = " + str(y) for x in range(10_000_000)]; print(time.time() - starttime)
3.5206360816955566
И разница уже весьма ощутимая (в читаемости, кстати, тоже).
Исправление CrX, :
Конкретно в этом примере с f-строкой лишь чуть-чуть быстрее получается — 3.98±0.02 сек против 4.03±0.3 сек (30 млрд итераций). НО! Стоит чуть-чуть усложнить пример, и уже:
>>> y = 1
>>> starttime = time.time(); z = [f"x + y = {x + y}; where x = {x} and y = {y}" for x in range(10_000_000)]; print(time.time() - starttime)
2.243973731994629
>>> starttime = time.time(); z = [f"x + y = {x + y}; where x = {x} and y = {y}" for x in range(10_000_000)]; print(time.time() - starttime)
2.239164352416992
>>> starttime = time.time(); z = ["x + y = " + str(x + y) + "; where x = " + str(x) + " and y = " + str(y) for x in range(10_000_000)]; print(time.time() - starttime)
3.5466392040252686
>>> starttime = time.time(); z = ["x + y = " + str(x + y) + "; where x = " + str(x) + " and y = " + str(y) for x in range(10_000_000)]; print(time.time() - starttime)
3.5206360816955566
И разница уже весьма ощутимая (в читаемости, кстати, тоже).
Исходная версия CrX, :
Конкретно в этом примере с f-строкой лишь чуть-чуть быстрее получается — 3.98±0.02 сек против 4.03±0.3 сек (30 млрд итераций). НО! Стоит чуть-чуть усложнить пример, и уже:
>>> y = 1
>>> starttime = time.time(); print(';'.join(f"x + y = {x + y}; where x = {x} and y = {y}" for x in range(10_000_000))[0]); print(time.time() - starttime)
x
2.4062654972076416
>>> starttime = time.time(); print(';'.join("x + y = " + str(x + y) + "; where x = " + str(x) + " and y = " + str(y) for x in range(10_000_000))[0]); print(time.time() - starttime)
x
3.1731977462768555
И разница уже весьма ощутимая (в читаемости, кстати, тоже).