Создать плоский текстовый файл в C++ около 50 - 100 МБ с содержанием «Добавлена первая строка» должна быть вставлена в файл, для 4 миллионов разСамый быстрый способ создать большой файл в C++?
ответ
используя старый файл стиля И.О.
Еореп файл для записи.
FSEEK до нужного размера файла - 1.
FWRITE один байт
fclose файл
1) забыл «Добавленная первая строка» 2) физически не выделяет все ОС/файловые системы. Некоторые оставляют промежуточные блоки нераспределенными. raj должен сказать, действительно ли дисковое пространство должно быть физически выделено или только логически. – blabla999 2009-01-13 20:23:34
Что такое 40 lakhs time mean? – EvilTeach 2009-01-13 21:25:13
Самый быстрый способ создать файл определенного размера просто создайте файл нулевой длины, используя creat() или open(), а затем измените размер с помощью chsize(). Это просто выделит блоки на диске для файла, содержимое будет тем, что оказалось в этих блоках(). Это очень быстро, так как запись буфера не требуется.
Не уверен, что я понял вопрос. Вы хотите убедиться, что каждый символ в файле является печатным символом ASCII? Если да, то что? Заполняет файл с «abcdefghabc ....»
#include <stdio.h>
int main()
{
const int FILE_SiZE = 50000; //size in KB
const int BUFFER_SIZE = 1024;
char buffer [BUFFER_SIZE + 1];
int i;
for(i = 0; i < BUFFER_SIZE; i++)
buffer[i] = (char)(i%8 + 'a');
buffer[BUFFER_SIZE] = '\0';
FILE *pFile = fopen ("somefile.txt", "w");
for (i = 0; i < FILE_SIZE; i++)
fprintf(pFile, buffer);
fclose(pFile);
return 0;
}
Вы не упомянули ОС, но я предполагаю, что Creat/открыть/закрыть/записи доступны.
Для действительно эффективного написания и предполагая, скажем, 4к страницы и размер дискового блока и повторной строки:
- открыть файл.
- выделить 4k * количество символов в вашей повторяющейся строке, идеально выровненную по границе страницы.
- печатать повторяющуюся строку в памяти 4k раз, точно заполняя блоки.
- Используйте write() для записи блоков на диск столько раз, сколько необходимо. Возможно, вы захотите написать частичную часть для последнего блока, чтобы получить размер, чтобы он появился правильно.
- закрыть файл.
Это обходит буферизацию fopen() и друзей, что хорошо и плохо: их буферизация означает, что они приятные и быстрые, но они все равно не будут такими эффективными, как это, накладные расходы на работу с буфером.
Это легко может быть написано на C++ или C, но предполагается, что вы будете использовать вызовы POSIX, а не iostream или stdio для повышения эффективности, поэтому это вне спецификации базовой библиотеки.
Самый быстрый способ создать большой файл на C++? Хорошо. Я предполагаю, что самый быстрый способ означает тот, который занимает наименьшее время работы.
Создайте текстовый файл в формате C++ около 50 - 100 МБ с содержимым «Добавленная первая строка», которое должно быть вставлено в файл 4 миллиона раз.
предварительно выделить файл, используя старый файл стиля И.О.
fopen the file for write.
fseek to the desired file size - 1.
fwrite a single byte
fclose the file
create a string containing the "Added first line\n" a thousand times.
find it's length.
предварительно выделить файл, используя старый файл стиля И.О.
fopen the file for write.
fseek to the the string length * 4000
fwrite a single byte
fclose the file
open the file for read/write
loop 4000 times,
writing the string to the file.
close the file.
Это мое лучшее предположение. Я уверен, что есть много способов сделать это.
- 1. Самый быстрый способ создать большой файл и самый быстрый способ его удалить
- 2. Самый быстрый способ написать большой файл на iPhone?
- 3. Python: Самый быстрый способ итерации это через большой файл
- 4. Самый быстрый способ создать флажки
- 5. Каков самый быстрый способ передать большой файл csv?
- 6. Самый быстрый способ записи n байтов в файл в C++
- 7. Каков самый быстрый способ подсчета строк в большой строке .NET?
- 8. Самый быстрый способ создать массив в Python
- 9. Самый быстрый способ записи в файл?
- 10. Самый быстрый способ перечитать файл в Python?
- 11. Самый быстрый способ скопировать файл в node.js
- 12. Самый быстрый способ записать целое число в файл в C
- 13. быстрый способ для поиска строки в большой CSV-файл C#
- 14. Самый быстрый способ создать новый файл с определенным номером
- 15. Каков самый быстрый способ создать файл .sln для веб-сайта?
- 16. Каков самый быстрый способ прочитать файл на диске в C++?
- 17. C++ - самый быстрый способ конкатенации строк (самый оптимальный способ)
- 18. C++ Какой бы быстрый способ написать большой двоичный файл?
- 19. Самый быстрый способ нарисовать эллипс в C#
- 20. Самый быстрый способ перебора стека в C#
- 21. Самый быстрый способ изменить строку в C
- 22. Самый быстрый способ найти строку в C#?
- 23. Самый быстрый способ обрезки строку в C#
- 24. Самый быстрый способ фильтрации пунктуации в C
- 25. Самый быстрый способ сравнить объекты в C#
- 26. Самый быстрый способ удалить все данные в большой таблице
- 27. Быстрый способ найти самый большой массив в многомерном массиве?
- 28. Самый быстрый способ заменить большой выпадающий список в IE8
- 29. Самый быстрый способ запросить большой набор данных в Android
- 30. Самый быстрый способ создать базовое Flash-приложение
Я думаю, все зависит от того, какой именно текст вам нужен в файле, и что вы подразумеваете под «лучшим». Самый быстрый? Я предполагаю, что многократное написание буфера, содержащего образец текста, доставит вас туда быстрее. Выбор размера буфера для получения максимальной скорости требует экспериментов. – 2008-11-05 15:44:16
«Лах» - это индийское слово за 10 000 человек. – ijw 2009-05-05 11:49:13