💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения откроются общий результат, оценки по 6 тематическим шкалам и подробный разбор.
Вопрос 1 из 30
Что в этом примере с `@x`, `$_` и `@a` происходит на самом деле?
Perl Измерения с модулем Benchmark Копировать
use Benchmark 'cmpthese';
cmpthese(-3,{map=>sub{my @x=map $_*2,@a},loop=>sub{my @x;push @x,$_*2 for @a}});
Показанная версия изначально работает как исправленная: Сравнение повторяется, но setup внутри измерения может доминировать; общую подготовку нужно отделить, если она не часть операции.
В показанном коде «Измерения с модулем Benchmark» проявляется другой эффект: односекундная точность и один запуск непригодны для короткой операции и подвержены шуму.
В этой версии кода возникает другой результат: Односекундная точность и один запуск непригодны для короткой операции и подвержены шуму.
Отрицательное время просит измерять варианты заданное число процессорных секунд, а cmpthese сравнивает скорости.
Единственное существенное правило этого запуска — следующая оговорка: Быстрее в микротесте не означает быстрее в приложении, если объёмы, ввод-вывод и распределение данных отличаются.
Вопрос 13 из 30
Как правка с `cmpthese`, `setup` и `target_a` меняет поведение на неудобном входе?
Perl Измерения с модулем Benchmark Копировать
cmpthese(20,{a=>sub{setup();target_a()},b=>sub{setup();target_b()}});
После изменения сохраняется прежний дефект: Односекундная точность и один запуск непригодны для короткой операции и подвержены шуму.
Сравнение повторяется, но setup внутри измерения может доминировать; общую подготовку не нужно отделить, если она не часть операции.
Правка лишь воспроизводит исходное поведение: Отрицательное время просит измерять варианты заданное число процессорных секунд, а cmpthese сравнивает скорости.
Сравнение повторяется, но setup внутри измерения не может доминировать; общую подготовку нужно отделить, если она не часть операции.
Сравнение повторяется, но setup внутри измерения может доминировать; общую подготовку нужно отделить, если она не часть операции.
Вопрос 19 из 30
Какое правило отделяет семантику Perl от случайно удачного запуска?
Benchmark используют после определения реальной гипотезы, с одинаковыми данными, прогревом и проверкой эквивалентности результатов.
Общее правило темы «Измерения с модулем Benchmark» сводится к частному результату: Отрицательное время просит измерять варианты заданное число процессорных секунд, а cmpthese сравнивает скорости.
Для ревью достаточно исключить частный дефект: Односекундная точность и один запуск непригодны для короткой операции и подвержены шуму.
Общее правило исчерпывается единственной правкой: Сравнение повторяется, но setup внутри измерения может доминировать; общую подготовку нужно отделить, если она не часть операции.
Правило «Benchmark используют после определения реальной гипотезы, с одинаковыми данными, прогревом и проверкой эквивалентности результатов» гарантирует, что ограничение «Быстрее в микротесте не означает быстрее в приложении, если объёмы, ввод-вывод и распределение данных отличаются» больше не проявится.
Вопрос 20 из 30
Какую закономерность проверяют задания темы «Профилирование с Devel::NYTProf»?
Для всех случаев темы подходит одно изменение: Профиль снимается на воспроизводимой нагрузке и сравнивается с базовой версией.
Для ревью достаточно исключить частный дефект: Один холодный запрос может показать инициализацию, но скрыть горячий путь и вариативность нагрузки.
Общее правило темы «Профилирование с Devel::NYTProf» сводится к частному результату: NYTProf собирает профиль по строкам и подпрограммам, а nytprofhtml строит интерактивный отчёт.
Профилировщик показывает, где тратится время, но причина может быть в данных, блокировке, системном вызове или вызываемой библиотеке.
Профилировщик показывает, где тратится время, но причина не может быть в данных, блокировке, системном вызове или вызываемой библиотеке.
Вопрос 25 из 30
Какую оговорку нужно добавить к основному правилу темы «Измерения с модулем Benchmark»?
Ограничение «Быстрее в микротесте не означает быстрее в приложении, если объёмы, ввод-вывод и распределение данных отличаются» исчезает, если обычный пример один раз завершился успешно.
Современный Perl устраняет указанное ограничение, поэтому отдельный тест избыточен.
Базовое правило «Benchmark используют после определения реальной гипотезы, с одинаковыми данными, прогревом и проверкой эквивалентности результатов» автоматически снимает указанную границу.
Быстрее в микротесте означает быстрее в приложении, если объёмы, ввод-вывод и распределение данных отличаются.
Быстрее в микротесте не означает быстрее в приложении, если объёмы, ввод-вывод и распределение данных отличаются.
Вопрос 27 из 30
Что остаётся верным о теме «Регулярные выражения», если учитывать контекст, отказ и побочный эффект?
Ограничение «Атомарные группы и possessive-квантификаторы могут убрать отступление, но сначала нужно доказать, что они сохраняют требуемую семантику» исчезает, если обычный пример один раз завершился успешно.
Базовое правило «Производительность regex проверяют на худших неподходящих строках, ограничивают вход и предпочитают однозначные конструкции или специализированный парсер» автоматически снимает указанную границу.
Атомарные группы и possessive-квантификаторы могут убрать отступление, но сначала не нужно доказать, что они сохраняют требуемую семантику.
В актуальной версии Perl эта граница больше не действует.
Атомарные группы и possessive-квантификаторы могут убрать отступление, но сначала нужно доказать, что они сохраняют требуемую семантику.