利用fstream进行文件拷贝测试
生活随笔
收集整理的這篇文章主要介紹了
利用fstream进行文件拷贝测试
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今天翻到一個(gè)早期寫測試代碼的目錄,找到幾個(gè)以前的測試代碼,于是拿出來貼到博客中。(只是簡單的測試,并不嚴(yán)謹(jǐn)。注意這里windows和linux的硬件環(huán)境不一樣)
這一個(gè)是使用fstream進(jìn)行文件拷貝的代碼,測試機(jī)器的環(huán)境大概如下(時(shí)間久了,機(jī)器有更新)
CPU: i7 低壓版 硬盤:兩個(gè)60G的SSD,好像是建興的 內(nèi)存:8G DDR3當(dāng)時(shí)僅在Arch Linux上做了測試,今天順便在windows下做一個(gè)測試。
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) {// 檢測目標(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下測試結(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; }測試結(jié)果如下:
Windows 10
Windows下使用VS2015編譯,64位版本(time命令來自git-bash)
Windows下硬盤是兩個(gè)機(jī)械硬盤之間拷貝(1T 7200轉(zhuǎn)希捷)
轉(zhuǎn)載于:https://www.cnblogs.com/oloroso/p/8979507.html
總結(jié)
以上是生活随笔為你收集整理的利用fstream进行文件拷贝测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端面试问题(HTML5+Http+we
- 下一篇: 深入理解乐观锁与悲观锁