小编ami*_*mit的帖子

是否有Visual Studio的Ccache?

我知道scons实现了它的功能ccache,但我坚持使用另一个构建系统.
我也知道gocachesourceforge上有一个项目旨在ccache为其他编译器实现类似功能,但似乎并不完整.

build visual-studio ccache

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

游戏编程的C++ - 爱还是不信任?

在游戏编程效率的名义下,一些程序员不信任几个C++特性.我的一位朋友声称了解游戏行业的运作方式,并会提出以下意见:

  • 不要使用智能指针.游戏中没有人这样做.
  • 在游戏编程中,例外不应该(并且通常不是)用于记忆和速度.

这些陈述中有多少是真的?设计C++功能时要牢记效率.这种效率不足以进行游戏编程吗?97%的游戏编程?

C-way-of-thinking仍然似乎对游戏开发社区有很好的把握.这是真的?

我在GDC 2009上观看了关于多核编程的另一个视频.他的演讲几乎完全针对单元编程,在处理之前需要进行DMA传输(简单的指针访问不适用于Cell的SPE).他不鼓励使用多态,因为指针必须"重新基于"DMA传输.多么悲伤.这就像回到广场一样.我不知道是否有一个优雅的解决方案来编程Cell上的C++多态.DMA传输的主题是深奥的,我在这里没有太多背景.

我同意C++对于那些希望使用小语言进行破解而不是阅读书籍堆栈的程序员来说也不是很好.模板也吓坏了调试.你是否同意游戏社区过分担心C++?

c++ performance

29
推荐指数
7
解决办法
6357
查看次数

带有受保护派生成员的CRTP

CRTP模式中,如果我们想要将派生类中的实现函数保持为受保护,则会遇到问题.我们必须将基类声明为派生类的朋友或使用类似的东西(我没有尝试过链接文章的方法).是否有其他(简单)方法允许将派生类中的实现函数保持为受保护?

编辑:这是一个简单的代码示例:

template<class D> 
class C {
public:
    void base_foo()
    {
        static_cast<D*>(this)->foo();
    }
};


class D:  public C<D> {
protected: //ERROR!
    void foo() {
    }   
};

int main() {
    D d;
    d.base_foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出error: ‘void D::foo()’ is protected了g ++ 4.5.1,但是如果protected被替换为compiles public.

c++ crtp

24
推荐指数
2
解决办法
3728
查看次数

cmake宏中的可选参数

我想创建一个参数是可选的宏.如果未指定,则参数的值应为空字符串.我怎样才能做到这一点?谢谢你的帮助.

cmake

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

C++智能指针性能

使用智能指针多少钱,特别是boost :: shared_ptr在时间和内存方面与裸指针相比成本更高?对于游戏/嵌入式系统的性能密集型部分,是否更好地使用裸指针?您是否建议使用裸指针或智能指针来处理性能密集型组件?

c++ boost smart-pointers

18
推荐指数
3
解决办法
7739
查看次数

代码提交评论的最佳实践

您对代码提交的评论使用了什么模板?

模板的一个示例是:

  1. (更改1):(源文件1.1,1.2):(更改的详细信息),(为什么)
  2. (更改2):(源文件2.1):(更改的详细信息),(为什么)

理想情况下,每个更改都应映射到问题跟踪器中的问题.这个模板好吗?

version-control

17
推荐指数
2
解决办法
3977
查看次数

C++中的AI应用程序:虚拟功能的成本是多少?有哪些可能的优化?

在我用C++编写的AI应用程序中,

  1. 没有太多的数值计算
  2. 有许多结构需要运行时多态性
  3. 通常,几个多态结构在计算过程中相互作用

在这种情况下,有没有任何优化技术?虽然我现在不打算优化应用程序,但为项目选择C++而不是Java的一个方面是提供更多的优势,以便能够使用非面向对象的方法(模板,过程,重载).

特别是,与虚拟功能相关的优化技术是什么?虚函数通过内存中的虚拟表实现.有没有办法将这些虚拟表预取到L2缓存上(从内存/ L2缓存中获取的成本正在增加)?

除此之外,C++中的数据局部技术是否有很好的参考?这些技术将减少数据提取到计算所需的L2高速缓存的等待时间.

更新:另请参阅以下相关论坛:界面的性能惩罚,几个基类的级别

c++ optimization

16
推荐指数
2
解决办法
5353
查看次数

你用什么C++例外?

可能的例外是最具争议的C++功能.包括谷歌在内的许多团队都不使用它们.当然,是否使用它们的决定取决于上下文 - 例如,在某些游戏中,可能会在内存不足时崩溃,但在医疗设备控制软件中则不然.除了内存不足之外,一些团队可能会使用例外来解决网络中断,文件未找到等问题,但其他人可能会说这种情况太常见而不能被称为例外(其他人可能会说,但如果它很常见,那么?)

通常,不使用异常的决定是基于可能被误导的论点,即很难编写异常安全的代码.有人说这个论点是错误的,因为使用错误代码的替代方法将导致至少同样困难的代码.大卫亚伯拉罕澄清了这一点.

在这个问题上,我很想知道:

  • 您在什么情况下使用例外?
  • 您的申请的背景是什么?为什么你不能没有例外?
  • 你如何设法编写异常安全的代码?您必须进行多少投资?
  • 是/值得吗?

c++ exception

16
推荐指数
3
解决办法
3284
查看次数

如何在多任务环境中测量多线程处理时间?

由于我在(抢占式)多任务,多核环境中运行多线程程序的性能评估测试,因此可以定期更换该进程.我想计算延迟,即只计算进程处于活动状态的持续时间.这将允许我推断性能在非多任务环境中的表现,即,只有一个程序运行(大多数时间),或者在不同的工作负载上.

通常测量两种时间:

  • 挂钟时间(即从流程开始以来的时间),但这包括交换流程的时间.
  • 处理器时间(即所有线程使用的CPU时间总和),但这对计算进程的延迟没有用.

我相信我需要的是单个线程的完成时间,这可能与任何线程使用的最大CPU时间不同,这是由于线程之间的任务依赖性结构.例如,在具有2个线程的进程中,线程1在运行时的前三分之二(CPU时间t)中负载很重,而线程2在该进程的后三分之二中加载(同样,对于CPU时间t).在这种情况下:

  • 挂钟时间将返回3t/2 +上下文切换时间+其他进程在其间使用的时间,
  • 所有线程的最大CPU时间将返回接近t的值,并且
  • 总CPU时间接近2t.
  • 我希望收到的测量结果是完工时间,即3t/2.

此外,多线程本身带来了不确定性.这个问题可能需要多次运行测试并总结结果.

此外,延迟还取决于操作系统如何调度线程; 如果进程的某些线程等待CPU而其他线程运行,则事情会变得更复杂.但是让我们忘记这一点.

有没有一种有效的方法来计算/估计这个完工时间?要提供代码示例,请使用任何编程语言,但最好使用Linux上的C或C++.

PS:我理解这个makepan的定义与调度问题的定义不同.调度问题中使用的定义类似于挂钟时间.

language-agnostic multithreading multicore time-measurement

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

如何在Windows上使用CMake进行非交互式构建?

我想在Windows上使用CMake设置自动构建.我正在使用Visual Studio 2005.

更新:这是我正在使用的:

我将devenv.exe设置为我的PATH.然后构建我运行下面的命令.我正在使用Hudson来构建.

devenv Crackpot.sln/build Debug/project ALL_BUILD

根据http://blogs.msdn.com/aaronhallberg/archive/2007/06/29/building-from-the-command-line-with-devenv.aspx更喜欢使用"devenv"而不是"denenv.exe"因为后者可能会产生一个GUI,从而挂起构建.

windows build cmake

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