Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Юзаю std::ofstream для логирования. Собственно, возникает вопрос: при логировании строки вызывается std::endl, который вызывает flush(), который производит запись на физический диск. Мне кажется это не очень оптимально. А как правильно? (при условии что потеря логировочных данных не очень критична) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 09:28 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Если это запись в лог - очень даже критично. Процесс повис/рухнул/сняли и ты не в курсе что последнее сделала прога, т.к. буфер умер вместе с процессом. Даже если не умер - смотришь параллельно лог - действие реально сделано, а в логе не видно, т.к. на диск еще не сбросилось. ИМХУ flush() после каждой записи в лог обязательно должен быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 10:02 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TЕсли это запись в лог - очень даже критично. Процесс повис/рухнул/сняли и ты не в курсе что последнее сделала прога, т.к. буфер умер вместе с процессом. Даже если не умер - смотришь параллельно лог - действие реально сделано, а в логе не видно, т.к. на диск еще не сбросилось. ИМХУ flush() после каждой записи в лог обязательно должен быть. зависит от задачи, у меня задача не в логировании приложения 24/7, а воткнуть логирование в чужой код чтобы узнать что там происходит(собрать статистику) - увы логирование сильно притормаживает работу и приложение аз-за этого не может нормально работать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 11:22 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
gamedev_12.15Юзаю std::ofstream для логирования. Собственно, возникает вопрос: при логировании строки вызывается std::endl, который вызывает flush(), который производит запись на физический диск. Мне кажется это не очень оптимально. А как правильно? (при условии что потеря логировочных данных не очень критична) никто же тебя не заставляет использовать endl. не нужно тебе - не используй. кстати именно в логировании наоборот важно делать flush после каждого сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 11:46 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
MasterZivgamedev_12.15Юзаю std::ofstream для логирования. Собственно, возникает вопрос: при логировании строки вызывается std::endl, который вызывает flush(), который производит запись на физический диск. Мне кажется это не очень оптимально. А как правильно? (при условии что потеря логировочных данных не очень критична) никто же тебя не заставляет использовать endl. не нужно тебе - не используй. кстати именно в логировании наоборот важно делать flush после каждого сообщения. (потеря последних запискей в логе для меня не критична) 1)Насколько существенным будет прирост производительности если не использовать flush() для каждой строки? 2)Как часто нужно его использовать чтобы не потерять в производительности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:16 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
gamedev_12.15, замени endl на "\n" и затести. Будет быстрее. Если поток закрывается корректно - в итоге все будет на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:19 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
автор1)Насколько существенным будет прирост производительности если не использовать flush() для каждой строки? Это зависит от средней длины твоей записи и соотношения этой длины с размером буфера в CRT и файловой системе. Соотношения их длин даст примерный коэффициент ускорения. автор2)Как часто нужно его использовать чтобы не потерять в производительности? std::endl ? Вообще не использовать, если тебе не нужна непосредственная запись единицы лога в файл (что довольно странно, но допустимо), то не используй std::endl вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:25 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
MasterZivавтор1)Насколько существенным будет прирост производительности если не использовать flush() для каждой строки? Это зависит от средней длины твоей записи и соотношения этой длины с размером буфера в CRT и файловой системе. Соотношения их длин даст примерный коэффициент ускорения. автор2)Как часто нужно его использовать чтобы не потерять в производительности? std::endl ? Вообще не использовать, если тебе не нужна непосредственная запись единицы лога в файл (что довольно странно, но допустимо), то не используй std::endl вообще. ok, если не использовать flush() запись в файл будет только закрытии файла и при переполнении CRT буфера. Тогда во сколько раз время записи на диск полного CRT буфера может отличаться от flush() для строки?(при исп. OS:windows msvc2008) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 14:36 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
gamedev_12.15Тогда во сколько раз время записи на диск полного CRT буфера может отличаться от flush() для строки?(при исп. OS:windows msvc2008) Может отличаться только в 1 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 14:44 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
gamedev_12.15ok, если не использовать flush() запись в файл будет только закрытии файла и при переполнении CRT буфера. Тогда во сколько раз время записи на диск полного CRT буфера может отличаться от flush() для строки?(при исп. OS:windows msvc2008) Какой размер буфера и от чего он зависит - ХЗ. Какой размер строки - тебе виднее. Затести: 1. Размер буфера: пиши блоки по килобайту одновременно в консоль пиши размер отправленного в поток, снимай задачу и сравнивай что в консоле и что на диске. 2. Скорость записи: запиши гиг с flush() и без. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 15:16 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
ты задаешь вопросы, на которые можно ответить только тестами реальной системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 15:19 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TЕсли это запись в лог - очень даже критичноВ морг.Процесс повис/рухнул/сняли и ты не в курсе что последнее сделала прога, т.к. буфер умер вместе с процессом.Вот когда действительно потребуется логирование предсмертных конвульсий - тогда и надо думать, как затормозить работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 17:27 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
MasterZivкстати именно в логировании наоборот важно делать flush после каждого сообщения.Ещё один ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 17:28 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВот когда действительно потребуется логирование предсмертных конвульсий - тогда и надо думать, как затормозить работу. Когда конвульсии начинаются - уже нет времени думать, надо пациента воскрешать. Чтоб не тормозило - не засирай логи чем попало. Если сотня строк в минуту пройдет - ничего не затормозится. Для подробностей - предусмотри режим отладки - пиши каждый чих, пусть тормозит, будет повод отключить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 18:12 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Я, как бы, несколько лет администрировал систему, где режим отладочных логов был чаще включен, чем выключен. Была масса ошибок и аварийных ситуаций, включая фатальные, но не разу не возникло вопроса: "А что было за секунду до падения???". А вот вопросов: "Когда же, блин, началась-то эта фигня и что вообще происходит?" - выше крыши. Ситуаций, когда разбирался даже не активный лог, а архивный - множество. И никогда не мешало, что логи пишутся поблочно, а не построчно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 18:18 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
В тех случаях, когда приложение реально падает - просят не логи, а дампы. И это не гипотеза. А ваши рассуждения очень похожи на рекомендации гонщика формулы-раз механику питстопа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 18:33 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЯ, как бы, несколько лет администрировал систему, где режим отладочных логов был чаще включен, чем выключен. Была масса ошибок и аварийных ситуаций, включая фатальные, но не разу не возникло вопроса: "А что было за секунду до падения???". Это проблема того что пишут в логи, а не подхода как писать логи. К разработчику хоть раз обращался? Лично я пишу в логи самое-самое важное. Мою систему администрируют посторонние админы. Все живет в полном автомате. Чего там у них происходит я понятия не имею. Происходит все: от кривых рук до кривого железа. Если ко мне (разработчику) обращается админ с какой-то проблемой, то первое что я прошу - логи. Фатальные проблемы крайне редки, там где они учащаются - включаем отладку. По итогу разбора какие-то отладочные записи переходят в самое-самое, т.е. пишутся всегда. В итоге в 99% случаев по просмотру лога я всегда ставлю правильный диагноз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 18:44 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TЭто проблема того что пишут в логи, а не подхода как писать логи. К разработчику хоть раз обращался?Когда в системе работает две-две с половиной сотни пользователей, событий будет много и подход "не пиши лишнего" перестаёт работать. Но ваше "лог надо писать построчно" - заблуждение и глупость. И от объёмов протоколирования это не зависит. P.S. К разработчикам я, конечно, обращался и то, что я говорю - не теория, а вполне себе практический опыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 19:08 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovвполне себе практический опыт. Вот теперь понятно. Опыт разный т.к. задачи разные. У тебя система с пользователями, у меня автомат, который должен работать нисмотря ни на что. У тебя система упала - тутже пользователи закипишили. У меня упала - никто не заметил, через 1-3 часа юзеры начинают подозревать неладное (не видя моих результатов в своей системе), пинают админа, он быстро реанимирует (если получится, обычно получается) и ко мне - что это было? За что я огреб? Что сделать чтоб этого больше не было? И тут я ему должен убедительно ответить что было. А если он пока реанимировал снимал задачи, ребутил и т.п. то я должен это знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 19:29 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Скорость чтения рядового человека 100-200 слов в минуту. Какой смысл писать гигабайты логов если они не смогут быть прочитаны? Для гигабайтов есть БД, такие логи лучше писать туда с мало-мальской формализацией, чтобы потом фильтровать можно было под 100-200 слов в минуту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 20:34 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TУ меня упала - никто не заметил, через 1-3 часа юзеры начинают подозревать неладное (не видя моих результатов в своей системе), пинают админа, он быстро реанимирует (если получится, обычно получается) и ко мне - что это было? За что я огреб? Что сделать чтоб этого больше не было?Аникейщик это а не админ. Если человек не вчера начал работать, то о проблемах он должен знать раньше пользователей. Хотя бы для того, чтобы не огребаться. И логи разбирать - прямая его обязанность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 20:49 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TКакой смысл писать гигабайты логов если они не смогут быть прочитаны? grep на что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 21:05 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovАникейщик это а не админ. Если человек не вчера начал работать, то о проблемах он должен знать раньше пользователей. Хотя бы для того, чтобы не огребаться. И логи разбирать - прямая его обязанность. Согласен, только презумпция невиновности в его пользу. Начнись разбор проблемы на уровне начальства - крайний я. Потому что он в штате, а я просто поставщик услуги, обещающий конкретные параметры в договоре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 21:12 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
alexy_blackты задаешь вопросы, на которые можно ответить только тестами реальной системы. да нет, примерно можно прикинуть и теоретически... размеры буфера обычно сейчас 8 или 16 КБ, размер строки - 100-200 символов, далее с учетом кодировки можно все посчитать, примерно, конечно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 09:15 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
[quot Basil A. Sidorov]Dima TЕсли это запись в лог - очень даже критичноВ морг.[quot ] ну он там вроде бы узнать, что связано это с анализом производительности, т. е. он в логи время записывает, так что действительно может быть не критично. ему бы конечно профайлер больше помог бы... OProfile например почти не тормозит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 09:18 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Можно взять за правило flush-ить только важные события (ERROR,FATAL) или события от особого логера. Таковых должно быть (наобум) 1-5% от всех остальных. А остальной трафик ... ну пускай течёт в фоне. По мере возможности. Или взять к примеру ОС. Она вобщем-то не логгирует свои "ядерные" события. И ЕМНИП техподдержка анализирует "посметрные дампы" memory. Это тоже вобщем-то метод. И экономно. И из поля зрения ничто не утекает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 11:33 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TСогласен, только презумпция невиновности в его пользу.Если есть косяк админа - он должен получать люлей. Чтобы нюх не терял. Именно поэтому админ должен знать больше, чем ему положено по должностным обязанностям.Начнись разбор проблемы на уровне начальства - крайний я.Это вообще не техническая проблема и лично я не вижу смысла обсуждать общие вопросы там, где каждый случай содержит частные ньюансы.Потому что он в штате, а я просто поставщик услуги, обещающий конкретные параметры в договоре.И это то же не техническая проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 13:21 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
maytonИли взять к примеру ОС. Она вобщем-то не логгирует свои "ядерные" события. И ЕМНИП техподдержка анализирует "посметрные дампы" memory. Это тоже вобщем-то метод. И экономно. И из поля зрения ничто не утекает. Чтобы с этих дампов что-то понять надо как минимум асм знать хорошо, инструментарий соответствующий освоить. Совсем не свойственные знания для прикладного программиста. Да и в дампах думаю не все гладко: если компилятор при сборке релиза осмысленные имена функций и переменных выкинул, половину кода заинлайнил, причем там в перемешку и твой код, и STL и т.д. и т.п. Как это читать? ХЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 18:54 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, это крайние случаи. Админы (большинство) адекватные и грамотные. Из частого (опять же в моей практике) не падение, а "зависание". Тот же админ пишет/звонит: "Прога молотит уже 20-30 минут, проц на 100% грузит. Что делать?" Смотрим лог и сразу все понятно: из его системы (где он тоже только админ) вывалилось что-то большое и обрабатывается, тут снять задачу вообще не вариант - обработка начнется с начала. Без flush() запись о том что конкретно обрабатывается висела бы в буфере, а мы бы с админом судорожно гадали что случилось. ИМХУ в этом вопросе нет одного правильного ответа на все случае жизни. Не надо тебе - не пользуй flush(). Если логи не читаешь, то вообще не пиши,так еще эффективнее работать будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 19:12 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TТот же админ пишет/звонит: "Прога молотит уже 20-30 минут, проц на 100% грузит. Что делать?" Смотрим лог и сразу все понятно: из его системы (где он тоже только админ) вывалилось что-то большое и обрабатываетсяЕсли человек не вчера работает, то он должен знать или, как минимум, представлять что и когда может "свалиться". И потом - что за паника? "А-а-а! Усё пропало! Полчаса стопроцентной загрузки!" - где трагедия? Ну и самое главное: если вы, заглянул в лог, поняли, что происходит, то я вижу только одну причину, по которой этого не понял админ - он вообще не заглядывал в лог.Без flush() запись о том что конкретно обрабатывается висела бы в буфереВремена Windows 9x, которая могла сутками держать данные в буфере - давно прошли. Максимум, который вы получите при отсутствии flush - секунды (десятки секунд) отложенной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 08:26 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВремена Windows 9x, которая могла сутками держать данные в буфере - давно прошли. Максимум, который вы получите при отсутствии flush - секунды (десятки секунд) отложенной записи. Тестами не подтверждается. Исходник Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Компилировал MSVC 2012 Express. Запускал на W7. Пишет ровно по 4096 байт (~40 строчек) каждые 400 секунд. Т.е. по наполнению. Какой-то ИИ не наблюдается. Можно паузу побольше поставить - будет раз в сутки писать. Единственное полезное: при закрытии окна крестиком - скидывает весь буфер. Если с диспетчера снимать задачу - не скидывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:02 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Вобщем в 99% случаев можно не париться с флашами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 12:20 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
MasterZivalexy_blackты задаешь вопросы, на которые можно ответить только тестами реальной системы. да нет, примерно можно прикинуть и теоретически... ... думаю прикинуть конечно можно, но обычно потом в самом неожиданном месте... это ситв макколен писал, что для хорошей опитимизации, нужно сначала написать простой код, который легко понять, потом взять профайлер, и опитимизировтаь только те методы, на которые он укажет. потому что обычно, если опитимизировать заранее, то оптимизируешь то, что и так работало хорошо. в результате и сам время потерял, и код стал менее читаемым. даже если например снизить время записи в лог, то в последствии может оказаться, что на это приходится только 0.01% верени работы системы. а, скажем, 38% она просиживает в какой-то функции. вот если оптимизировать эту функцию, в которой 38%, то это даст реальный плюс, даже если она от этого станет быстрее очень не на много, суммарный эффект будет больше, чем у лога.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 13:21 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TBasil A. SidorovВремена Windows 9x, которая могла сутками держать данные в буфере - давно прошли. Максимум, который вы получите при отсутствии flush - секунды (десятки секунд) отложенной записи. Тестами не подтверждается. Код: plaintext 1. Процитированное утверждение - про дисковые буферы ОС, а не про буфер потока, который естественно сам по себе не сбрасывается на диск, потому что это просто участок памяти процесса, и все действия над ним происходят во время операций над потоком, а никак не в фоне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 13:30 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TКомпилировал MSVC 2012 Express. Запускал на W7. Пишет ровно по 4096 байт (~40 строчек) каждые 400 секунд. Т.е. по наполнению.Как мониторили? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 17:51 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Вот тут по буферизации что-то есть http://stackoverflow.com/questions/12997131/stdfstream-buffering-vs-manual-buffering-why-10x-gain-with-manual-buffering ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 17:56 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovDima TКомпилировал MSVC 2012 Express. Запускал на W7. Пишет ровно по 4096 байт (~40 строчек) каждые 400 секунд. Т.е. по наполнению.Как мониторили? Код: plaintext Как обычно, в фаре F3 на файле лога. Можно любую другую смотрелку логов использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 18:49 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Для надёжности я-бы сравнил работу просмотрщика FAR с утилитой tail.exe ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 19:32 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Dima TКак обычно, в фаре F3 на файле лога. Можно любую другую смотрелку логов использовать.Могу и ошибаться, но если "смотрелка логов" использует Directory Change Notifications , то ваш пример проходит по сценарию "данные пишутся, но метаданные (каталожные записи) не обновляются". Проверяется тем самым "type > nul". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2015, 20:35 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Кстати поведение Far при переходе от Win2003 к Windows7 изменилось в части наблюдения за directory list. В старой версии размеры файлов обновлялись динамически (очевидно по нотификациям от directory change). В семёрке эти нотификации толи исчезли совмем толи стали отложенные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2015, 01:05 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Я не настаиваю на фаре. Просто я привык смотреть логи фаром и он показывает сразу после появления записи на диске. Можно брать любой другой инструмент вызывающий доверие. Например Код: plaintext 1. а дальше давим в консоли кнопки: стрелка вверх, enter. С любой частотой, какая нравится. Тут 100% полное перечитывание файла, все что есть на диске в момент запуска, без всяких оптимизаций с использованием Notifications Результат тот же самый. Пишет ровно по 4096 байт (~40 строчек) каждые 400 секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2015, 07:14 |
|
||
|
Эффективное(быстрое) логирование в файл
|
|||
|---|---|---|---|
|
#18+
Тогда остаются грабли реализации стандартной библиотеки, по которым разработчики ОС уже потоптались пятнадцать назад. Если реализация "оптимизирует" число (системных) вызовов write() - это её проблемы. Навешивать костыль в виде flush() - именно, что навешивать костыль. P.S. Разумеется, могут быть и ньюансы с 512e (эмуляция 512-байтовых секторов поверх 4КБайт физических), но принудительный сброс в лог каждой строчки - был и остаётся костылём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2015, 10:36 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018698]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 445ms |

| 0 / 0 |
