Re[2]: История одной оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.10.05 16:29
Оценка: +1 :)
Здравствуйте, eao197, Вы писали:

E>На самом деле это получилась интересная, увлекательная и поучительная история о том, как ошибка при проектировании программы повлияло на ее производительность и расширяемость. Имхо, если бы на момент написания своего компилятора ты имел ну чуть-чуть больший опыт, все, что тебе пришлось сделать -- это задействовать собственный вариант getch, который прятал бы от тебя работу с буфером прочитанных из файла данных.


Можно на это посмотреть и так. Но смысл моего рассказа был как раз в том, что я сознательно не пошел на это так как сделал умозрительное предположение о том, что работа с буфером напрямую будет куда эффетивнее чем чтение по байту. Я понимал что чтение из файла операция не быстрая. И понимал, что если читать большими кусками, то скорость увеличится, но я так же думал, что во многом скорость определяется оптимальностью алгоритма. А это была ошибка. По сравнению со временем затрачиваемым на чтение данных с диска сам алгоритм занимал ничтожно мало времени. Собственно о выделенном и говорилось в моем рассказе. Очень жаль, что большиство уперлось в микроуровень и не поняло основного посыла этого рассказа. Я видел только одно сообщение
Автор: Дарней
Дата: 28.10.05
в этом обсуждении из которого можно понять, что человек правильно понял мои слва.

Если бы я был умнее тогда, я не стал делать оптимизацию на базе предположения. Вместо этого я бы просто проверил бы его на простом тесте и на основании результата выбрал бы куда более простое решение. Именно этим ценен данный опыт, а вовсе не какими-то там открывшимися деталями работы с файлами которые давно уже не интересны так как нет ни той ОС, ни тех библиотек.

E>Жаль только, что твой рассказ был переполнен наскоками на Павла Дворкина, это очень сильно впечатление от всей истории подпортило.


Да, наверно я переборщил с его пинанием. Однако этот пример как раз и был призван продемонстрировать крайнуюю неверность его мировозрения.

E>А вот по поводу блочного и посимвольного чтения данных из файла лет 5-6 назад мне статья попалась (кажется в "Открытых системах"). Там метрики приводились для какого-то Unix-а. Так вот меня поразило, что во многих случаях блочное чтение не имеет преимуществ над посимвольным чтением. Учитывая, что сейчас файловые системы очень умные, решение о том, читать ли данные посимвольно или поблоково, лучше принимать с учетом конкретной ОС и железа.


Это все не имеет значения. Скорость чтения определяется реализацией библиотеки. Конечно же чтение данных без кэширования в рамках процесса таких ОС как Виндовс или Линукс не может быть таким же быстрым как доступ к локальному буферу. Но библиотека может сама эффективно кэшировать данные.

В общем, еще раз выражу свое сожаление о том, что битобайтное мировозрение берет верх. Почти никто из прочитавших не смог понять основного посыла.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.