我们使用BOOST1.63 boost::filesystem::remove_all(dir_to_remove)删除包含数百万个文件的文件夹(每个文件的大小为1MB).文件夹"dir_to_remove"具有子文件夹,每个子文件夹的文件不超过1000个.删除所有文件需要10分钟以上.我们使用CentOS6.5.
在检查了operations.cpp之后,我们意识到BOOST实际上使用了Linux rmdir和unlink命令:
# define BOOST_REMOVE_DIRECTORY(P)(::rmdir(P)== 0)
# define BOOST_DELETE_FILE(P)(::unlink(P)== 0)
Run Code Online (Sandbox Code Playgroud)
该文章列出的几种方法在Linux上更有效地删除文件.它建议使用rsync.
如何使用C++快速删除数百万个文件?
我在支持 avx2 (Intel E5-2643 V3) 的机器上编译了我的 c++ 程序。它编译并运行得很好。我确认使用了 avx2 指令,因为在分解二进制文件后,我看到了 avx2 指令,例如vpbroadcastd.
然后我在另一台只有 avx 指令集(Intel E5-2643 V2)的机器上运行这个二进制文件。它运行也很好。二进制文件是否在向后兼容的 avx 指令上运行?这个指令是什么?您看到任何潜在的问题吗?