考虑到一个指向函数的指针返回另一个指向另一个函数的指针是C中用来引入一些运行时多态/回调的机制,实现这个的等效方式是什么在C++中,同时改善局部性并降低关于指针和间接指向的成本?函数指针在C++中返回另一个函数指针与地方
例如this syntactic sugar可以帮助,但我并不是真的对此感兴趣,尽管这是一种以C++方式而不是更多C-ish做事情的好方法,我更感兴趣的是在尝试改进本地减少运行时显式指针的使用。
考虑到一个指向函数的指针返回另一个指向另一个函数的指针是C中用来引入一些运行时多态/回调的机制,实现这个的等效方式是什么在C++中,同时改善局部性并降低关于指针和间接指向的成本?函数指针在C++中返回另一个函数指针与地方
例如this syntactic sugar可以帮助,但我并不是真的对此感兴趣,尽管这是一种以C++方式而不是更多C-ish做事情的好方法,我更感兴趣的是在尝试改进本地减少运行时显式指针的使用。
关于为什么人们在C中使用函数指针来模拟多态性的真正原因不是性能,而是C既不支持真正的多态性也不支持模板的事实。这是你在C++中的两种选择。所有三种方法在this thread进行比较。
请注意,即使调用函数指针不需要虚函数调用执行的附加vtable查找,调用虚函数和函数指针也会遇到同样的主要性能问题:两种情况下的分支预测都不可靠,你倾向于结束更多的管道冲洗。
这就是我想要做的,我试图帮助CPU与地方。 – user2485710
正如[链接的线程](http://stackoverflow.com/questions/1955074/virtual-methods-or-function-pointers)中指出的那样,您可以通过使用模板获得最佳性能。但在大多数情况下,它不值得从中产生不利之处。关于使用模板最糟糕的是[隐藏的编译器错误](http://programmers.stackexchange.com/questions/70086/why-are-c-template-error-messages-so-horrific)。 – Domi
你想做什么?向我们展示这样做的旧方法(代码)。我们不能根据猜测来改进事物。 – user694733
@ user694733我没有添加任何具体的例子,因为这会使讨论极化,我不期待任何其他用户的代码片段,这个问题更多的是关于设计和性能,而不是实际的代码。 – user2485710
性能总是与特定应用程序相关联。没有通用指南:*“做X并且总是会更快”*。对于你的问题虚拟功能似乎要走的路。根据我的经验,他们提供的灵活性一直是比可忽略的性能成本更大的因素。如果你想改善分支预测等事情,你需要首先显示确切的问题,因为答案将取决于此。 – user694733