日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用fstream进行文件拷贝测试

發(fā)布時(shí)間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用fstream进行文件拷贝测试 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天翻到一個(gè)早期寫測(cè)試代碼的目錄,找到幾個(gè)以前的測(cè)試代碼,于是拿出來貼到博客中。(只是簡單的測(cè)試,并不嚴(yán)謹(jǐn)。注意這里windows和linux的硬件環(huán)境不一樣)

這一個(gè)是使用fstream進(jìn)行文件拷貝的代碼,測(cè)試機(jī)器的環(huán)境大概如下(時(shí)間久了,機(jī)器有更新)

CPU: i7 低壓版 硬盤:兩個(gè)60G的SSD,好像是建興的 內(nèi)存:8G DDR3

當(dāng)時(shí)僅在Arch Linux上做了測(cè)試,今天順便在windows下做一個(gè)測(cè)試。
CentOS7_gcc4.9.4.ova其實(shí)是虛擬機(jī)的鏡像文件,1.8G大小。

代碼如下:

#include <fstream> #include <iostream> #include <iterator> #include <algorithm>bool copy_file(const char* src_file_path,const char* dst_file_path) {// 檢測(cè)目標(biāo)文件是否存在{std::ifstream exsit(dst_file_path);if(exsit){std::cout<<"目標(biāo)文件 "<< dst_file_path<< " 已經(jīng)存在"<<std::endl;return false;}}std::ifstream fin(src_file_path,std::ios::binary);std::ofstream fout(dst_file_path,std::ios::binary);if(!fin || !fout){std::cout<<"打開源文件或目標(biāo)文件失敗"<<std::endl;return false;}// rdbuf返回streambuf*// 速度比迭代器拷貝快太多// Linux下測(cè)試結(jié)果// time ./fstream_copy_file.exe CentOS7_gcc4.9.4.ova /mnt/data/CentOS7_gcc4.9.4.ova// 0.23s user 8.15s system 10% cpu 1:16.98 totalfout << fin.rdbuf();return true;/*使用迭代器進(jìn)行拷貝沒有大問題,但是效率不高// time ./fstream_copy_file.exe CentOS7_gcc4.9.4.ova /mnt/data/CentOS7_gcc4.9.4.ova407.45s user 4.37s system 97% cpu 7:00.73 totalfin.unsetf(std::ios::skipws); //輸入流默認(rèn)跳過空白字符,取消此設(shè)置// 使用迭代器進(jìn)行拷貝std::copy(std::istream_iterator<char>(fin),std::istream_iterator<char>(),std::ostream_iterator<char>(fout,""));return true;*/ }int main(int c,char** v) {if(c != 3){printf("Usage:%s srcfile dstfile\n",v[0]);return 0;}copy_file(v[1],v[2]);return 0; }

測(cè)試結(jié)果如下:
Windows 10
Windows下使用VS2015編譯,64位版本(time命令來自git-bash)
Windows下硬盤是兩個(gè)機(jī)械硬盤之間拷貝(1T 7200轉(zhuǎn)希捷)

# 使用rdbuf拷貝,速度大概50M每秒 $ time ./fstrean_copy_file.exe /g/CentOS7_gcc4.9.4.ova /d/CentOS7_gcc4.9.4.ovareal 0m36.357s user 0m0.000s sys 0m0.015s# 使用std::copy拷貝,速度大概6M每秒 $ time ./fstrean_copy_file.exe /g/CentOS7_gcc4.9.4.ova /d/CentOS7_gcc4.9.4.ovareal 5m3.663s user 0m0.000s sys 0m0.015s

轉(zhuǎn)載于:https://www.cnblogs.com/oloroso/p/8979507.html

總結(jié)

以上是生活随笔為你收集整理的利用fstream进行文件拷贝测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。