Steve & Borland
Привет, Стив. Я тут занимаюсь рефакторингом старого кода, чтобы его можно было легче тестировать. Можешь минутку уделить, обсудим, как лучше: ради читаемости или чтобы производительность не страдала?
Рефакторинг ради читаемости обычно оправдан, если код предстоит менять. Если есть возможность добавить комментарий, переименовать переменную или разбить большой метод на несколько маленьких — будущих багов станет меньше, а новые разработчики освоятся быстрее. Но не стоит отказываться от микрооптимизаций, которые действительно важны, например, от плотного цикла в критическом пути. Если нужна скорость — сначала замерь, а потом уже оптимизируй этот конкретный участок. Оставь остальное читаемым и достаточно быстрым; критическую секцию можно подкрутить потом. Придерживайся понятной логики, оптимизируй производительность только когда увидишь реальную узкую точку.
Звучит неплохо – главное ясность, скорость вторична. Есть какое-то проблемное место, с которым возишься? Может, подскажу, где небольшая правка может дать ощутимый результат.
Конечно. Там цикл, который разбирает строку CSV снова и снова. На каждой итерации создаётся новый строковый объект для каждого поля, потом всё разбивается на запятые. Это генерирует кучу мусора и заставляет сборщик мусора работать в усиленном режиме. Если перейдёшь на сканирование по индексу, используя один char-массив, сократишь количество выделений памяти вдвое и получишь прирост скорости примерно в 25 процентов. Попробуй.
Отличное место. Повторное использование буфера и ручное сканирование – верное решение, только не забудь сбрасывать индекс после каждой строки и продумай защиту от переполнения. Можно даже обернуть это в небольшой вспомогательный класс, чтобы логику разбора вынести из основного цикла. Так код будет чище, и сборщик мусора будет работать лучше. Попробуй и посмотри на результаты бенчмарка, чтобы убедиться в приростке в 25 процентов.
Отлично, я подключу помощника и запущу бенчмарк, чтобы убедиться в победе. Буду следить за сбросом индекса и защитой от переполнения.
Отлично, дай знать, как цифры. Готов подкорректировать помощника, если что-то вызовет у тебя вопросы. Удачи!
Сообщу, как цифры будут. Спасибо. Мы по правилам действуем. Сообщу, как цифры будут. Спасибо.