由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++中virtual function的性能差是个误解
相关主题
国内的编程论坛很不自由
相关话题的讨论汇总
话题: virtual话题: base话题: std话题: cout话题: base2
进入Programming版参与讨论
1 (共1页)
g****g
发帖数: 310
1
今天在我的机器上试验了一把,用rdtsc读取了virtual和non-virutal的call所需要的
时间,大约non-virtual快了大约200个CPU cycles。
因为CPU是3GHz的,分析了一下,把virtual变成non-virtual call的性能差异:
如果一个虚函数每秒调用150,000次的话,那么全部改成non-virtual能提升1%的性能。
几乎可以忽略。
B********e
发帖数: 1062
2
# of the virtual functions influence the performance a lot.

【在 g****g 的大作中提到】
: 今天在我的机器上试验了一把,用rdtsc读取了virtual和non-virutal的call所需要的
: 时间,大约non-virtual快了大约200个CPU cycles。
: 因为CPU是3GHz的,分析了一下,把virtual变成non-virtual call的性能差异:
: 如果一个虚函数每秒调用150,000次的话,那么全部改成non-virtual能提升1%的性能。
: 几乎可以忽略。

f*****Q
发帖数: 1912
3
C++ 存virtual function的那个table是每个类共用一个还每个实例有一个?

【在 g****g 的大作中提到】
: 今天在我的机器上试验了一把,用rdtsc读取了virtual和non-virutal的call所需要的
: 时间,大约non-virtual快了大约200个CPU cycles。
: 因为CPU是3GHz的,分析了一下,把virtual变成non-virtual call的性能差异:
: 如果一个虚函数每秒调用150,000次的话,那么全部改成non-virtual能提升1%的性能。
: 几乎可以忽略。

g****g
发帖数: 310
4
tried 12 virtual funcs vs 1 virtual funcs,
NO DIFFERENCE!

【在 B********e 的大作中提到】
: # of the virtual functions influence the performance a lot.
B********e
发帖数: 1062
5
Too early to draw the conclusion. Show me your testing plans.
I found the following paper;
http://www.cs.ucsb.edu/~urs/oocsb/papers/oopsla96.pdf

【在 g****g 的大作中提到】
: tried 12 virtual funcs vs 1 virtual funcs,
: NO DIFFERENCE!

g****g
发帖数: 310
6
Hey, are you using a computer of year 1995???
It's quite outdated. You should write code and test yourself. Easy job:
class Base
{
public:
virtual void say()
{
std::cout<<"say";
}
Base()
{
std::cout<<"Base";
}
~Base()
{
std::cout<<"~Base";
}
};
class Base2
{
public:
void say()
{

b=rdtsc()-a;
std::cout << "Take:" << b << std::endl;
}
Base2()
{
std::cout<<"Base2";
}
~Base

【在 B********e 的大作中提到】
: Too early to draw the conclusion. Show me your testing plans.
: I found the following paper;
: http://www.cs.ucsb.edu/~urs/oocsb/papers/oopsla96.pdf

g****g
发帖数: 310
7
测试了CRTP的性能,比virtual func差了很多很多. 多花了1000多个cycle。CRTP应该
扔垃圾桶了。
1 (共1页)
进入Programming版参与讨论
相关主题
国内的编程论坛很不自由
相关话题的讨论汇总
话题: virtual话题: base话题: std话题: cout话题: base2