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应该
扔垃圾桶了。 |