请问在虚拟机linux上运行函数会变慢吗?

weiweishuo 2013-02-06 10:06:18
#include<stdio.h>
#include<time.h>
int main(void){
int t1;
typedef struct _timeval {
long s;
long ns;
} timeval;
timeval start,end;
printf("time now %d\n",t1);
int i,j;
double n;
gettimeofday(&start,NULL);
for(i=0;i<100;i++){
for(j=0;j<10000;j++){
//n+=0.1;
}
}
gettimeofday(&end,NULL);
int ns=end.ns-start.ns;
ns/=1000;
int s=end.s-start.s;
printf("%d ms,%d s passed\n",ns,s);
}
我用的windows,linux跑在VMware上。请问在linux虚拟机上运行下面的函数,和在真实linux环境下的输出结果会有差距么?差距大么?(可以保证宿主CPU足够空闲)
我在虚拟机上测了100万次空循环耗时在12~17毫秒,若执行n+=0.1运算,上升到20多毫秒。
希望工作在linux环境下的朋友帮忙测一下。
...全文
148 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
weiweishuo 2013-03-05
引用 4 楼 CandPointer 的回复:
跑一下测试, 就知道了 差距还是很大的. 以纯计算,为例子. windows下的superpi考察 单线程的计算能力 宿主机内, 13.7秒完成. 虚拟机VMware内,需要 18.5秒完成. 多线程,或者更丰富的测试. 都有,自己跑一下就行了. 有些文章只是在那传说,说性能达99%,95%等. 这个是非常笼统的. 磁盘/网络IO的性能,的确没太大……
多谢! 能再回答我的这个问题么:“gettimeoftoday判断毫秒级别的时间段不够准确,那有没有较准确的函数呢? ”。
  • 打赏
  • 举报
回复
CandPointer 2013-03-03
跑一下测试, 就知道了 差距还是很大的. 以纯计算,为例子. windows下的superpi考察 单线程的计算能力 宿主机内, 13.7秒完成. 虚拟机VMware内,需要 18.5秒完成. 多线程,或者更丰富的测试. 都有,自己跑一下就行了. 有些文章只是在那传说,说性能达99%,95%等. 这个是非常笼统的. 磁盘/网络IO的性能,的确没太大损失. 但CPU纯粹的高性能运算,损失大了去了
  • 打赏
  • 举报
回复
freetstar 2013-03-03
应该是有损耗的!
  • 打赏
  • 举报
回复
weiweishuo 2013-03-02
引用 1 楼 ljhnew 的回复:
这个程序是简单的单线程程序,在简单的耗时时间小的任务里,一般在虚拟机里和实际的机器里面,差别不是特别大。 并且,在linux上,你用gettimeofday来判断在毫秒级别的时间的长短,并不太准确。都是个大概的时间。
gettimeoftoday判断毫秒级别的时间段不够准确,那有没有较准确的函数呢?
  • 打赏
  • 举报
回复
qq120848369 2013-02-07
虚拟机当然慢..不要在虚机里跑性能, 找台物理机吧.
  • 打赏
  • 举报
回复
ljhnew 2013-02-07
这个程序是简单的单线程程序,在简单的耗时时间小的任务里,一般在虚拟机里和实际的机器里面,差别不是特别大。 并且,在linux上,你用gettimeofday来判断在毫秒级别的时间的长短,并不太准确。都是个大概的时间。
  • 打赏
  • 举报
回复
相关推荐
发帖
系统维护与使用区
加入

1.9w+

社区成员

系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
申请成为版主
帖子事件
创建了帖子
2013-02-06 10:06
社区公告
暂无公告