Одной из первых вещей, которые меня заинтересовали, было сравнение этих двух языков с точки зрения скорости, поскольку я где-то читал, что в Pharo есть встроенный JIT-компилятор. Поэтому я написал небольшой причудливый скрипт на обоих языках, который генерирует 8 миллионов номеров, фильтры 1/3 из них вычисляет 1/sqrt(x) для каждого, суммирует результаты и повторяет процесс сто раз, каждый раз слегка меняя интервалы, в конце снова суммируя результаты, и засекая время всего процесса. Это не полноценный тест, а просто упражнение для получения оценки порядка величины, но я постарался сделать обе версии максимально похожими.
Версия Python 3:
Код: Выделить всё
import time, math
mega = lambda n: sum([1/math.sqrt(1 + i + n) for i in range(8000000) if (i + 1) // 3 == 0])
start = time.time()
print(sum([mega(n + 1) for n in range(100)]))
stop = time.time() - start
print(stop)
< /code>
Результаты с Python 3.8.5 (по умолчанию, 28 июля 2020 г., 12:59:40): < /p>
34.7701230607214
52.75216603279114
< /code>
версия Pharo 8: < /p>
| mega range start stop |.
range := [:n | (((1 to: 8000000) select: [:j | (j quo: 3) = 0]) collect: [:i | 1 / (n + i) sqrt]) sum].
start := DateAndTime now.
Transcript show: (((1 to: 100) collect: [:n | range value: n]) sum); cr.
stop := (DateAndTime now - start) asSeconds.
Transcript show: stop; cr.
< /code>
Результаты по pharo-8.0.0+build.1141.sha.1b7a8d8203fce2a577794451f555bba4222614081 (64 бит): < /p>
34.7701230607214
45
Подробнее здесь: https://stackoverflow.com/questions/652 ... to-python3
Мобильная версия