Нужно склеить 10 тысяч строк в одну строку.
Пишу на AutoIt:
Время работы - 56 сек.
Пишу на Perl (5.14):
Время работы - 0,12 сек.
Результат выдается одинаковый, только на Perl получилось в 466 раз быстрее. Написал ради интереса не 10 тыс., а миллион циклов - получилось 3,5 секунды и файл в 220 Мб. Выходит, что Perl колбасит строки быстрее, чем успевает винчестер успевает записывать. Причем, и тот и другой являются интерпретируемыми языками. Есть ли способ ускорить эту операцию в AutoIt?
Добавлено:
Ура! :laugh:
Я понял, в чем была моя ошибка!
Вместо
нужно писать
Действие то же самое, но получается намного быстрее (все равно медленней чем Perl, но не в 500 раз, а всего в 5 раз).
Добавлено:
Интересно, почему получается такая огромная разница (на 2 порядка) при практически одинаковом коде
Пишу на AutoIt:
Код:
global $x, $line1, $line2
$line1 = 'Решение городской Думы Краснодара от 23 июня 2011 г. N 14 п. 8 “О внесении изменений в решение городской Думы Краснодара от 28.01.2010 N 69 п. 5 “О дополнительных мерах социальной поддержки отдельных категорий граждан”';
for $x = 1 to 10000
$line2 = $line2 & @CRLF & $line1
Next
filewrite("result_autoit.txt", $line2)
Время работы - 56 сек.
Пишу на Perl (5.14):
Код:
$line1 = 'Решение городской Думы Краснодара от 23 июня 2011 г. N 14 п. 8 “О внесении изменений в решение городской Думы Краснодара от 28.01.2010 N 69 п. 5 “О дополнительных мерах социальной поддержки отдельных категорий граждан”';
for (1 .. 10000){
$line2 .= "\n$line1";
}
open(OUT, ">result_perl.txt");
print OUT $line2;
Время работы - 0,12 сек.
Результат выдается одинаковый, только на Perl получилось в 466 раз быстрее. Написал ради интереса не 10 тыс., а миллион циклов - получилось 3,5 секунды и файл в 220 Мб. Выходит, что Perl колбасит строки быстрее, чем успевает винчестер успевает записывать. Причем, и тот и другой являются интерпретируемыми языками. Есть ли способ ускорить эту операцию в AutoIt?
Добавлено:
Сообщение автоматически объединено:
Ура! :laugh:
Я понял, в чем была моя ошибка!
Вместо
Код:
$line2 = $line2 & @CRLF & $line1
нужно писать
Код:
$line2 &= @CRLF & $line1
Действие то же самое, но получается намного быстрее (все равно медленней чем Perl, но не в 500 раз, а всего в 5 раз).
Добавлено:
Сообщение автоматически объединено:
Интересно, почему получается такая огромная разница (на 2 порядка) при практически одинаковом коде