网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月02日漏签0天
c++吧 关注:626,983贴子:2,112,937
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 33回复贴,共1页
<<返回c++吧
>0< 加载中...

这个算法C++比Java慢是为什么

  • 只看楼主
  • 收藏

  • 回复
  • 1063685203
  • ||
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
static double getPolygonArea(double *points, int length) {
if (length < 6) {
// 无法构成多边形
return 0;
}
double area = 0.0;
double x0 = points[0], y0 = points[1];
double dx1, dy1;
double dx2, dy2;
dx1 = *(points+2) - x0;
dy1 = *(points+3) - y0;
for (int i = 4; i < length - 1; i += 2) {
dx2 = *(points+i) - x0;
dy2 = *(points+i + 1) - y0;
double subArea = (dx1 * dy2 - dx2 * dy1) / 2;
area += subArea;
dx1 = dx2;
dy1 = dy2;
}
return area;
}
这个函数在C++上的耗时比Java还高。调用次数10次的时候还不相上下,1000次的时候C++多用10%时间,10000次的时候C++多用17%的时间,100000次的时候C++多用33%的时间。虽然难以致信,但是确实是Java更快。如果把static去除,似乎编译器会自动优化,无论重复调用多少次时间都是0。如果加上inline,一点作用也没有。是否有办法把它优化到比Java更快。


  • 破忆断回
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你把 -O2优化开开


2025-08-02 03:19:00
广告
不感兴趣
开通SVIP免广告
  • 幻の上帝
  • ->*
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
怎么调用的?编译器版本和选项?Java 代码呢?


  • 射命丸文
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你这函数要是能inline成功就见了鬼了,上代码吧,用什么计的时,怎么测试测的


  • 495大吃货
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我觉得海星


  • 495大吃货
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 495大吃货
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

100000也没有明显的差距 Java也在10ms以内


  • 1063685203
  • ||
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你们只调用一次,所以时间都很短,我有一直调用很多次。我是用三角函数计算出圆周上的坐标,坐标个数为0x1ffffff,也就相当于数组长度是0x3fffffe。然后用这个数组代入,再连续计算100000次。最后C++耗时27秒,Java耗时22秒。


2025-08-02 03:13:00
广告
不感兴趣
开通SVIP免广告
  • 1063685203
  • ||
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
发现原因了,原来之前设置错了,一直用的MinGW32。改成MinGW64就合理了。犯傻了。
C++ 比Java快约5%。如果用32位的C++就会慢。


  • 1063685203
  • ||
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用gcc还要快一点,不过差距不大,都是18秒到19.5秒之间


  • 戒色大表哥
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你这个实验还是挺有意义的


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 33回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示