![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| MuForum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
Доброго времени суток.
Работаю на "Microsoft Visual Studio 2010"; Язык программирования: "C++"; Операционная система: Windows NT+; # Задача: Реализовать самый быстрый способ записи логов на жесткий диск. - На сколько я понимаю, то запись символьных данных в двоичный/бинарный файл будет гораздо быстрее чем в символьный. - Я решил реализовать запись данных в бинарном виде, а уже для просмотра написать отдельно программу для переконвертирования данных. - То есть, необходимо записать массив символов в двоичном виде в двоичный файл. # Запись данных в текстовой файл:
# Запись данных в бинаный файл: (Но это не правильный вариант)
Но проблема в том, размер файла уменьшается лишь на маленький объём + Файл можно открыть и просмотреть через обычный блокнот, а это уже противоречит сути бинарных файлов. P.S. -> Прошу помочь реализовать задачу. Это сообщение отредактировал(а) MuForum - 8.4.2010, 14:13 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
1. Буква b во втором параметре fopen'а указывает, нужно ли при записи преобразовывать символ \r в \r\n
2. char * szBuf уже содержит символы, которые записываются в файл. Если хочешь записать в файл переменную типа int, нужно писать
3. зачем переменная m_fHandle заведена в классе, если она используется только внутри функции WriteDataInFile. объяви её там локально. хотя это непринципиально. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Попробуй вместо CRT-шных fwrite, fread использовать WinAPI-шные ::WriteFile, ::ReadFile функции (хотя первые юзают вторые). Добавлено @ 15:42 Можно еще поиграться с размером буфера. Добавлено через 3 минуты и 39 секунд + Асинхронные запись/чтение Это сообщение отредактировал(а) Alca - 8.4.2010, 15:44 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
на каком основании сделано данное замечание? через блокнот можно открыть многое - не многое вот только можно понять. если текст из файла мало чем отличается от вводимого текста - это как бе показатель того , что файл не бинарный. почему не используете файловый ввод/вывод в стиле С++? Добавлено через 2 минуты и 37 секунд для ознакомления |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Можно позаимствовать опыт у уже созданных библиотек для ведения логов. log4cxx, например. Уж там на этой оптимизации собаку съели.
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |