问:有没有办法加快 clang++ STD 库 fstreams 的速度?(有人知道为什么它比 g++ 慢得多吗?)
我正在尝试处理非常大(许多 GB)的二进制数据文件,并惊讶地发现性能如此之差。起初,我认为这与我的代码有关。但是我在一个简化的示例中看到了同样缓慢的性能。
我什至尝试通过 rdbuf()->pubsetbuf() 分配不同大小的缓冲区,但这似乎没有太大效果。
这是一个简单的输入/输出示例:
#include <fstream>
int main() {
std::ifstream is {"bigSourceFile"};
std::ofstream os {"bigSourceFileCopy"};
std::string line;
while (std::getline (is, line) ) {
os << line;
}
}
Run Code Online (Sandbox Code Playgroud)
下面是一些生成 1.3GB 源文件的代码。使用它来生成 readWrite 程序的源文件:
#include <fstream>
#include <string>
std::string createTailStr () {
std::string result {"__"};
for (auto i (0); i< 58; ++i) {
result += 'A'+i;
}
return result;
}
int main() {
std::string tail {createTailStr()};
std::ofstream os {"bigSourceFile"};
constexpr auto …Run Code Online (Sandbox Code Playgroud) 如何设置外部项目以下载不是 .tgz 文件的链接?
例如,Catch提供了一个单头分发版本。我只想下载这个而不是 git repo 或 .tgz 版本。但我还没有想出如何告诉 CMake 这样做。
我想做类似的事情:
Include(ExternalProject)
ExternalProject_Add(
catch
PREFIX ${CMAKE_BINARY_DIR}/catch
URL https://github.com/philsquared/Catch/releases/download/v1.9.6/catch.hpp ${CMAKE_BINARY_DIR}/catch
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
LOG_DOWNLOAD ON
)
Run Code Online (Sandbox Code Playgroud)
这将失败,因为 URL 假定 url 是压缩的 tar 文件。我尝试了DOWNLOAD_COMMAND 的各种变体,但都没有成功。
当我为 llvm/clang 运行 cmake 时收到以下消息:
\n\n-- Performing Test COMPILER_RT_TARGET_HAS_ATOMICS - Success\nCMake Error at cmake/modules/AddLLVM.cmake:589 (if):\n if given arguments:\n\n "LTO" "IN_LIST" "LLVM_DISTRIBUTION_COMPONENTS" "OR" "NOT" "LLVM_DISTRIBUTION_COMPONENTS"\n\n Unknown arguments specified\nCall Stack (most recent call first):\n tools/lto/CMakeLists.txt:19 (add_llvm_library)\n\n\n-- Configuring incomplete, errors occurred!\nRun Code Online (Sandbox Code Playgroud)\n\n这是我正在使用的命令:
\n\n\n\n\ncmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release\n -DLLVM_ENABLE_LTO=On -Wno-dev ..
\n
几个月前,我成功构建了 llvm/clang 5.0。但今天,我在各个目录和子目录上执行了 \xe2\x80\x9c git pull \xe2\x80\x9d 来获取最新的更改。
\n\n另外,我将 cmake 更新到了 3.8.2。但这并没有帮助。
\n\n根据评论者的请求,这里是不带选项的输出no-dev:
-- Performing Test COMPILER_RT_TARGET_HAS_ATOMICS - Success\nCMake Warning (dev) at …Run Code Online (Sandbox Code Playgroud)