Программирование на языке Ruby
Шрифт:
Особенно
Чтобы воспользоваться этой возможностью, нужно включить вызов следующего метода в отлаживаемую программу (естественно, до первого обращения к методу
Запустите клиент командой
После установления соединения вы можете и не получить приглашение
Дополнительную информацию об этой библиотеке поищите в документации, которая входит в комплект поставки.
16.5. Измерение покрытия кода
Очень полезно знать, какие части программы не были протестированы, а следовательно, нуждаются в автономных тестах. Иногда и сам инструмент для замера покрытия может обнаружить ошибки. Допустим, в программе есть предложение
Командную утилиту
В простейшем случае для ее запуска достаточно указать имя вашей программы в качестве параметра:
Одновременно с исполнением вашей программы
Из-за цветового кодирования трудно привести черно-белый снимок с экрана. Но сам инструмент настолько прост, что, потратив пару минут, вы сможете увидеть все сами.
Хотя
Можно использовать
•
•
•
Обсуждение API далеко выходит за рамки этого раздела. Почитайте документацию и начинайте экспериментировать.
16.6. Измерение производительности
Я не люблю уделять слишком много внимания оптимизации скорости. В общем случае нужно правильно выбрать алгоритм и придерживаться здравого смысла.
Конечно, быстродействие имеет значение. Иногда даже очень большое. Однако начинать думать об этом на раннем этапе цикла разработки — ошибка. Как говорится, «преждевременная оптимизация — источник всех зол»; эту мысль впервые высказал Хоар (Hoare), а потом подтвердил Кнут (Knuth). Или, перефразируя, сначала пусть работает правильно, а уж потом быстро». На уровне отдельного приложения эта рекомендация обычно оказывается хорошим эвристическим правилом, хотя для больших систем она, быть может, и не так актуальна.
Я бы еще добавил: «Не оптимизируйте, пока не измерите».
Это не такое уж серьезное ограничение. Просто не приступайте к переработке ради скорости, пока не ответите на два вопроса: «Действительно ли программа работает медленно? Какие именно ее части снижают производительность?»
Второй вопрос важнее, чем кажется на первый взгляд. Программисты часто уверены, что и так знают, на что программа тратит большую часть времени, но специальные исследования убедительно свидетельствуют о том, что в среднем эти догадки имеют очень мало общего с действительностью. «Теоретическая» оптимизация для большинства из нас — плохая идея.
Нам нужны объективные измерения. Профилировщик нужен.
В комплект поставки Ruby входит профилировщик
Рассмотрим листинг 16.6. Эта программа открывает файл
Китайская, японская, тайская кухни
Дом и Семья:
кулинария
рейтинг книги
Рыцарь из ниоткуда. Сборник
Сварог
Фантастика:
фэнтези
попаданцы
рейтинг книги
Тень мачехи
Любовные романы:
современные любовные романы
рейтинг книги
Сёгун
Азиатская сага
Приключения:
исторические приключения
прочие приключения
рейтинг книги
Моя жена меня слишком балует
Веб-новеллы и ранобэ
Фантастика:
ранобэ
рейтинг книги
100 знаменитых отечественных художников
Документальная литература:
биографии и мемуары
рейтинг книги
Тьма в бутылке
3. Карл Мёрк и отдел «Q»
Детективы:
полицейские детективы
рейтинг книги
Война и наказание: Как Россия уничтожала Украину
Документальная литература:
прочая документальная литература
публицистика
рейтинг книги
Досье Дрездена. Книги 1 - 15
Досье Дрездена
Фантастика:
фэнтези
ужасы и мистика
рейтинг книги
Ошибки богов. Тетралогия
Ошибки богов
Фантастика:
фэнтези
рейтинг книги
Собрание сочинений. Том 45
Научно-образовательная:
философия
рейтинг книги
Притчи человечества
Религия и эзотерика:
религия
рейтинг книги
Россия распятая (Книга 1)
Проза:
русская классическая проза
рейтинг книги