小编Nel*_*man的帖子

了解C++性能的资源?

我正在寻找能够帮助我深入理解C++性能的资源(理想情况下是一本书).这是一个更多的背景:

我编写的服务器软件具有非常高的吞吐量要求和/或低延迟要求.我们用C++编写; 现在还没有真正进行辩论.我的大多数同事似乎对C++性能有了更好的理解.他们有更好的心理模型,因此他们可以判断某些代码何时会在规模上表现不佳.我缺乏这种理解,因此我希望改善我的心理模型.

我特别感兴趣的是:

  • 了解缓存效果,以及由于对象布局导致的缓存局部性如何影响我的代码性能.这是我团队其他成员似乎提出的头号问题.
  • 了解内存分配如何影响性能.我应该使用TCMalloc(或其他mallocs),我应该怎么知道?我应该如何调整各种分配和释放参数?
  • 我怎么知道对象复制的开销何时会很重要(例如,应该切换到指针)?
  • 我一般也对"优化"感兴趣,只要我知道何时使用它们.

我真的不感兴趣的事情:

  • "高性能计算"这一术语似乎表明了更多面向数学/模拟的应用程序.
  • 关于C++性能相对于其他语言的讨论,因为我坚持使用C++.

作为一个起点,任何人都知道这本书,Efficient C++是否符合要求?

c++ performance

23
推荐指数
2
解决办法
2855
查看次数

如何从Ant构建文件设置Eclipse构建路径和类路径?

关于Ant和Eclipse有很多讨论,但之前没有回答似乎对我有所帮助.

这是交易:我正在尝试构建一个Java程序,它可以从命令行成功编译Ant.(为了进一步混淆问题,我试图编译的程序是Ant本身.)

我真正想要做的是将这个项目带入Eclipse并在Eclipse中编译,以便正确解析类型绑定和变量绑定(来自Eclipse JDT的命名法).我需要这个,因为我需要对构建在Eclipse JDT之上的代码运行静态分析.我将Java项目引入Eclipse以便Eclipse构建并解析所有绑定的常规方法是将源目录导入Java项目,然后告诉它使用src/main /目录作为"源目录" ".

不幸的是,使用Ant执行此操作会导致构建失败并出现大量编译错误.在我看来,Ant构建文件正在设置类路径并正确构建路径(可能通过排除某些源文件),Eclipse没有这些信息.

有没有办法获取嵌入在Ant构建文件中的类路径和构建路径信息,并将这些信息提供给Eclipse以放入其.project和.classpath文件中?我试过,从现有的构建文件(文件菜单中的一个选项)创建一个新项目,但这没有帮助.该项目仍然具有相同的编译错误.

谢谢,内尔斯

java eclipse ant build eclipse-jdt

7
推荐指数
2
解决办法
2万
查看次数

F#:无法隐藏签名中的类型缩写?为什么不?

在F#中,我希望得到一个相当标准的抽象数据类型:

// in ADT.fsi
module ADT
  type my_Type

// in ADT.fs
module ADT
  type my_Type = int
Run Code Online (Sandbox Code Playgroud)

换句话说,模块内部的代码知道my_Type是int,但外部代码不是.但是,F#似乎有一个限制,其中特定的缩写不能被签名隐藏.此代码给出了编译器错误,此处描述了限制.

如果my_Type是一个有区别的联合,那么就没有编译器错误.我的问题是,为什么限制?我似乎记得能够在SML和Ocaml中做到这一点,而且,在创建抽象数据类型时,这不是一个非常标准的事情吗?

谢谢

f#

6
推荐指数
2
解决办法
1131
查看次数

Eclipse JDT:以编程方式调用'正确的缩进'?

我正在开发一个Eclipse插件,用于修改用户项目中的Java代码.

基本上这个插件的结果是Java注释被添加到某些方法中,所以

void foo() { ... }
Run Code Online (Sandbox Code Playgroud)

@MyAnnotation
void foo() { ... }
Run Code Online (Sandbox Code Playgroud)

除了它看起来不那么像; 新插入的注释的缩进是wack(具体来说,新注释一直到行的左侧).我想对文件进行所有更改,然后以编程方式调用"Correct Indentation".

有谁知道如何做到这一点?我在这里或在JDT论坛中找不到答案,所有看起来相关的类(IndentAction,JavaIndenter)都在内部包中,我不应该使用...

谢谢!

java eclipse eclipse-jdt

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

在向量中查找NULL

我想知道一个指针向量是否包含一个NULL的条目,最好使用STL中的代码而不是写一个循环.我试过这个表达式:

std::find(dependent_events.begin(), dependent_events.end(), NULL)
Run Code Online (Sandbox Code Playgroud)

但我得到错误告诉我,我有一个"指针和整数之间的比较." 有一个更好的方法吗?

c++ stl

6
推荐指数
2
解决办法
2113
查看次数

运算符()的含义?

C++中operator()的含义是什么?我发现它经常用于“函子”或函数对象,例如比较器。那么这些函数是如何调用的呢?在其他情况下有用吗?我可以为这样的运算符声明多少个参数?例如,以下内容可以接受吗?

bool operator() (Foo f, Baz b, Quz q, Oik o) {...}
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading

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

标签 统计

c++ ×3

eclipse ×2

eclipse-jdt ×2

java ×2

ant ×1

build ×1

f# ×1

operator-overloading ×1

performance ×1

stl ×1