Запустил ваш код в wsl. Без компиляции 70 сек, компилированный 36 сек, итого ускорение ~2 раза
Запустил 2 сессии (2 закладки в терминале) и одновременно в каждой скомпилированный код.
Надо, наверное, было явно написать следующее. Исправляюсь
Для эксмеримента
я отключил любой вывод в файлы (в логи).
Я
не компилировал код
несколько раз для запуска в нескольких сессиях. Я скомпилировал его единожды, и запускал как
gp mycode.gp.runЗапускался
ровно один и тот же исполняемый код, с хардкоженными в него диапазонами счёта (т.е. ваш код, но с отключенным выводом в логи).
Таким образом, это был эксперимент именно на скорость и способность ОС (гостевой линукс в хосте виндовс) разделять время между задачами.
Для "боевого" запуска в таком режиме, надо продумать этот момент. Вместо хардкода диапазонов счета, как-то передавать их коду как параметр. Следить, чтобы два инстанса не мешали друг другу писать в лог. Например, писать в разные файлы: имена файлов должны конструироваться или считываться откуда-то, а не быть хардкодом.
Поэтому изначально я вам писал,что
Да, если это будет законченная функция (t_CLOSURE)
То есть это не должен быть код как вы его вписываете в интерпретаторе, а должно быть всё обёрнуто в my_function(args)={...}
Соответственно, функция не должна использовать глобальные переменные внутри своего кода, т.е. всё что ей надо должно передаваться через аргументы.
Ну и конечно, все локальные переменные надо объявить через my().