創建C++約50的純文本文件 - 100 MB 與「新增第一線」應該插入的內容到文件使用老式銼4萬次在C++中創建大文件的最快方法?
3
A
回答
15
10
創造了一定大小的文件是最快的方式使用creat()或open()創建零長度文件,然後使用chsize()更改大小。這將簡單地爲文件分配磁盤上的塊,內容將是這些塊()中發生的任何事情。這是非常快的,因爲沒有緩衝區寫入需要發生。
2
不知道我明白這個問題。你想確保文件中的每個字符都是可打印的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;
}
1
您沒有提到的操作系統,但我會假設科瑞/開啓/關閉/寫都可以。
對於真正有效的寫作和假設,比如說,一個4K頁面和磁盤塊的大小和重複的字符串:
- 打開該文件。
- 在重複字符串中分配4k *字符數,理想情況下與頁面邊界對齊。
- 將重複字符串打印到內存中4k次,精確填充塊。
- 使用write()根據需要多次將塊寫出到磁盤。您可能希望爲最後一個塊編寫一個部分塊以使大小正確出來。
- 關閉文件。
這將忽略fopen()和朋友,這是好的和壞的緩衝:其緩衝意味着他們是很好,速度很快,但他們仍然不會被視爲有效,因爲這,它沒有與緩衝區一起工作的開銷。
這可以很容易地用C++或C編寫,但是爲了效率的緣故,假設你將使用POSIX調用而不是iostream或stdio,所以它不在覈心庫規範中。
0
在C++中創建大文件的最快方法? 好的。我認爲最快的方式意味着最短的運行時間。
用C++創建一個平面文本文件,大約50 - 100 MB,內容'添加第一行'應該插入到文件中400萬次。
預分配使用舊樣式文件的文件IO
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.
預分配使用舊樣式文件的文件IO
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. 從文本文件中創建numpy數組的最快方法
- 3. 在.NET中創建文件的最快,最有效的方式
- 4. 在c#中從父子表創建XML的最快方法?
- 5. 在ruby中創建最大方法
- 6. C - 獲取文件大小的最快方法是什麼?
- 7. 在Delphi中讀取大文件的最快方法是什麼?
- 8. 在Python中處理大文件的最快方法
- 9. 在Ruby中讀取大文件的最快方法是什麼?
- 10. 在java中讀取大文件的最快方法
- 11. 最快的方法來保存大量的行到C中的文本文件#
- 12. 創建大型BufferedImages的更快方法
- 13. 創建HTML元素的最快方法?
- 14. 最快的方法創建NumberSequence數組
- 15. 最快的C++ GUI創建
- 16. 在c#中創建一個文件夾的快捷方式#
- 17. 如何在C中快速創建大文件?
- 18. 在C++中讀取文件到內存的最快方法?
- 19. 創建1000個文件夾並將文件放在最後一個文件夾中的最快方法
- 20. 在FAT上快速創建大文件
- 21. 鍵盤快捷鍵在Visual c中創建事件方法#
- 22. 最快的方式來創建一個大文件和最快的方式來刪除它
- 23. 最快的方式來寫大文件
- 24. 從大量ASCII文件中讀取數據的最快方法
- 25. 在iPhone上寫大文件的最快方法是什麼?
- 26. 創建大文件(> 1GB)的最有效方法
- 27. 創建大量小文件的最佳方法?
- 28. 用C#/ ASP.NET創建腳手架代碼的最快方法
- 29. 什麼是從C可執行文件增加ext4文件系統中linux文件大小而不在文件中創建空洞的最快方法?
- 30. 最快的方法來檢查C#中的文件真實性
我想這一切都取決於你想要在文件中的「文本」,以及你的意思是「最好的」。最快的? 我想,重複編寫一個包含一些示例文本的緩衝區會使您在那裏獲得最快的速度。選擇緩衝區的大小以獲得最佳速度需要進行試驗。 – 2008-11-05 15:44:16
'拉赫'是一個印度單詞10,000。 – ijw 2009-05-05 11:49:13