小编Tal*_*Tal的帖子

clang++ fstreams 比 g++ 慢 10 倍

问:有没有办法加快 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)

c++ performance fstream g++ clang++

6
推荐指数
0
解决办法
847
查看次数

cmake ExternalProject_Add 如何下载 URL 非 tar 文件?

如何设置外部项目以下载不是 .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 的各种变体,但都没有成功。

cmake catch-unit-test

3
推荐指数
1
解决办法
1620
查看次数

cmake 在 macOS 下构建 llvm/clang 时出错

当我为 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!\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我正在使用的命令:

\n\n
\n

cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release\n -DLLVM_ENABLE_LTO=On -Wno-dev ..

\n
\n\n

几个月前,我成功构建了 llvm/clang 5.0。但今天,我在各个目录和子目录上执行了 \xe2\x80\x9c git pull \xe2\x80\x9d 来获取最新的更改。

\n\n

另外,我将 cmake 更新到了 3.8.2。但这并没有帮助。

\n\n

根据评论者的请求,这里是不带选项的输出no-dev

\n\n
-- Performing Test COMPILER_RT_TARGET_HAS_ATOMICS - Success\nCMake Warning (dev) at …
Run Code Online (Sandbox Code Playgroud)

c++ macos cmake llvm clang

1
推荐指数
1
解决办法
2398
查看次数

标签 统计

c++ ×2

cmake ×2

catch-unit-test ×1

clang ×1

clang++ ×1

fstream ×1

g++ ×1

llvm ×1

macos ×1

performance ×1