Я побежал NYTProf в программе perl, я очень удивлен, увидев, что линия с «распаковкой» занимает много времени: (линия была выполнена 14654 раза и заняла 39,6 мс). Но сама функция unpack() довольно быстроslow perl performance, почему и как улучшить
$delme1 = substr($data, 47,1)
$_flags = unpack("C", $delme1);
# spent 2.98ms making 14654 calls to main::CORE:unpack, avg 203ns/call
Любой знает, почему такие большие накладные расходы?
Благодаря
Update 1 См строку с "распаковывать" вызова. В нем говорится, что он потратил в общей сложности 39,6 мс.
Я не знаю, что означают цифры слева, но он прямо сказал вам, что сумма была 2,98 мс, и что каждый проход занял 2,98 мс/14654 звонка = 203 нс/звонок – ikegami
Столбец для 39,6 мс название «Время на линии» согласно NYTProf. Столбец для 2,98 мсек - «тайм-тайм». Когда я смотрю на общее время, проведенное в рутине, которая имеет несколько строк, 39,6 мс сильно взвешивается в течение всего времени. Так или иначе, процессор потратил много времени на эту линию. – packetie
Coroberation: perl -MBenchmark = timethis -e'timethis (-3, q {для (1..1000) {my $ x = unpack ("C", "X");}}); '' output ' 3283.39/s', что равно 1 распаковке + присваивание + цикл каждые 304ns. – ikegami