TCL только вызов на один миллиард цикловPython

Программы на Python
Ответить
Anonymous
 TCL только вызов на один миллиард циклов

Сообщение Anonymous »

Я следил за конкурсом на 1 миллиард итераций, запущенным в Твиттере (https://github.com/bddicken/languages), поэтому решил посмотреть, как поведет себя TCL. Однако меня ждал очень неприятный сюрприз. В то время как код Python на моей машине занял 91,16 с, эквивалентный код TCL занял 778,70 с. Ниже приведены два кода. Код Python был взят из репозитория Challenge. Я не большой эксперт по TCL, поэтому вопрос: возможна ли какая-либо оптимизация?
TCL-код.

Код: Выделить всё

set u [expr {int([lindex $argv 0])}]
set r [expr {int(rand()*10000)}]
array set a {}

for {set i 0} {$i < 10000} {incr i} {
set a($i) 0
for {set j 0} {$j < 100000} {incr j} {
set a($i) [expr {$a($i) + $j % $u}]
}
set a($i) [expr {$a($i) + $r}]
}

puts $a($r)
Код Python

Код: Выделить всё

import sys
import random

def main():
u = int(sys.argv[1])         # Get an input number from the command line
r = random.randint(0, 10000) # Get a random number 0 

Подробнее здесь: [url]https://stackoverflow.com/questions/79256353/tcl-lang-one-bilion-loop-challange[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»