小编rkm*_*rkm的帖子

如何解释kcachegrind的结果

谁能告诉我如何对kcachegrind的结果感兴趣.

我有两个版本的代码(v1,v2)都在调试模式下编译.我通过valgrind用选项运行它们:

valgrind --tool=callgrind -v ....

这样生成的输出文件在kcachegrind中打开.现在我已经发现代码的版本v2运行速度比第一版v1更快,因为它意味着.但是我如何从kcachegrind的调用图中获得结果.

在kcachegrind All Callers选项卡中,我有以下列:Incl. , Distance, Called, Caller.

IIUC,Called并且caller在计划中没有被称为"来电者".但我不了解其他人.

另一件事是在选择特定功能然后在"呼叫者"选项卡上显示更多信息.Ir, Ir per call, count, caller 在类型选项卡中:`EventType,Incl.自我,简短,公式.

我在这里没有任何想法.

到目前为止,我读过这些问题:

KCachegrind解释混淆 对分析结果感到困惑

c++ profiling valgrind callgrind kcachegrind

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

将boost :: scoped_ptr更改为std :: unique_ptr

我正在使用boost::scoped_ptr我想要替换的代码std::unique_ptr.我想知道搬家时是否有任何不利之处std::unique_ptr.Boost可跨平台和编译器移植.但我不确定C++ 11是否支持所有编译器,如MSVC.我知道GCC和Clang非常支持C++ 11.

我已经阅读了" intrusive_ptr在C++ 11中 " 的SO问题,其简短回答是"否".因此,如果有人有使用两者的经验,请分享您的意见和想法

c++ boost smart-pointers unique-ptr c++11

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

为 C++ 库创建 ac 包装器

是否通过不透明指针将 C++ 库包装到 C 提供了稳定的 ABI 接口?我很清楚 ABI 接口以及为什么 c++ 没有稳定的接口。这与名称修改和许多其他事情有关。我知道 C 在这部分非常稳定。与 C++ 相比,将 C 库包装成各种其他语言也很容易。这两个是为我的库制作 ac API 的驱动力。

将 C++ 库包装为 C 时,底层代码仍然是 C++。我的情况是 C++,带有 boost 共享 ptr 和其他依赖项。

那么既然底层代码是C++,那么ABI的稳定性是如何实现的。或者换句话说,共享库(.so、.dll 等)中仍然编译了 C++ 的东西。

我想知道它是如何工作的。也许有人可以为我提供一个很好地解释这些东西的例子。

c c++ api abi

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

Mac OSX minumum支持sse版本

在osx上可以启用的最小支持sse标志是什么?大多数硬件,我现在使用支持sse2.在Windows和Linux上,我有一些代码来测试sse支持.我在某处读到了osx长期以来对sse的支持.但我不知道哪个是可以启用的最低版本.最终的二进制文件将被复制到其他osx平台,所以我不能像GCC那样使用-march = native

如果在所有版本上默认启用它,在构建代码时是否必须传递-msse或-msse2标志?

这是编译器版本:

Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)

这是uname -a的输出

uname -a
Darwin mme.local 14.1.0 Darwin Kernel Version 14.1.0: Mon Dec 22 23:10:38 PST 2014; root:xnu-2782.10.72~2/RELEASE_X86_64 x86_64
Run Code Online (Sandbox Code Playgroud)

这是sysctl machdep.cpu.features的输出

machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM …
Run Code Online (Sandbox Code Playgroud)

c++ macos optimization sse compiler-optimization

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

什么是msvc_x64_x64,与msvc_x64有何不同

我正在将Visual Studio 2019与cmake项目一起使用。在Visual Studio IDE中打开cmake设置UI时,它将显示C ++项目的工具集列表。

从工具集列表中,我有msvc_x64msvc_x64_x64。我想在本机x64上构建,因此我可以简单地选择msvc_x64。

但是,为什么有两个名为x64和x64_x64的工具集?

是同一件事还是为了某种向后兼容性而维护两个名称?

根据文档,我可以了解工具集的命名约定,例如msvc_x86_x64,amd64,x64_arm等。我想了解x64和x64_x64以及为什么这两个存在?

两者之间有什么区别吗?如果可以,我可以获得有关它的一些文档吗?

c++ cmake visual-studio windows-7-x64 visual-studio-2019

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

在C中分割多行字符串

如何在 const char* 数组中分割多行字符串?

这是输入字符串。

const char* str = "122.123,-38.789"
                  "122.123,-39.78";
Run Code Online (Sandbox Code Playgroud)

我需要从中得到两个字符串。

str1 = "122.123,-38.789";

str2 = "122.123,-39.78";
Run Code Online (Sandbox Code Playgroud)

的输出

printf("string='%s'", str)

string='122.123,-38.789122.123,-39.78'
Run Code Online (Sandbox Code Playgroud)

应该怎么做才能分割这个字符串?

c string split multilinestring

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

什么是 gcc 的 Wmaybe-unitialized 警告

我知道 gcc 中有一个未初始化的警告,可以告诉您变量是否未初始化。这对我来说很清楚。但我想知道什么是“Maybe-Initialized”警告?

gcc 不确定这是否已初始化。或者考虑一下,代码正确初始化,gcc 认为“可能”它没有初始化。如果编译器不确定为什么我应该有这个警告?

现在我可以禁用警告-Wno-maybe-uninitialized或在代码中进行修复。

但我的问题是这意味着什么?为什么 gcc 认为它可能未初始化。gcc 确定变量已初始化,因为我没有得到-Wuninitialized.

我正在使用 GCC 4.8 Fedora 21 x86_64。

另外,如果有人可以展示如何触发此警告,我将不胜感激。

c++ gcc gcc-warning

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

为什么在MSVC2015上std :: abs输出不正确

我在使用MSVC和GCC的std :: abs时得到的结果不正确

#include <cmath>
#include <iostream>
#include <complex>

int main()
{
  std::cerr << std::sqrt((-6.)*(-6.) + 288.*288.) << "\n";
  std::cerr << std::abs( std::complex<float>(-6, 288) ) << std::endl;

  return 0L;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在VC++(带有更新的MSVS 2015 CE)和gcc 4.9.2上产生了不同的结果

使用MSVC

288.062
288.063
Run Code Online (Sandbox Code Playgroud)

与GCC

288.062
288.062
Run Code Online (Sandbox Code Playgroud)

现在实际结果是288.062,这对于gcc与std :: abs和std :: sqrt是正确的.但是当使用std :: sqrt和std :: abs时,msvc有不同的结果,这可能是msvc2015中的一个错误.

但是看看xcomplex的代码,我不明白_Fabs()的实现.有人可以帮助我理解这个特定的代码,并可能分析代码如何以这样的错误结束.

c++ visual-c++

-2
推荐指数
1
解决办法
88
查看次数