为什么G++编译出来的程序会比C++编译出来的慢那么多?[问]

Flouse 2007-09-13 03:48:09
如题……

似乎效率相差近两倍!(G++慢很多)难道是版本问题?

这是我在PKU OJ提交的一道题的结果。

优化前:
2644831 flouse 1064 Accepted 220K 386MS C++ 1335B 2007-09-10 19:11:29
2644828 flouse 1064 Time Limit Exceeded G++ 1335B 2007-09-10 19:10:27

估化后:
2644849 flouse 1064 Accepted 228K 105MS C++ 1342B 2007-09-10 19:15:07
2644840 flouse 1064 Accepted 372K 169MS G++ 1342B 2007-09-10 19:13:01

My Source:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

//#include <fstream>
//ifstream in("cable.in");
//#define cin in

int n, k;
int l[10000], maxK;
__int64 tl, maxL, start, end;

int count(int m){
if (m == 0) m = 1;
int num = 0;
for (int i = 0; i < n; i++){
num += l[i] / m;
}
return num;
}
//多CASE版
//int main(){
// float tmp;
// while (cin >> n >> k){
// if (n == 0 && k == 0) break;
// tl = 0;
// maxL = 0;
// for (int i = 0; i < n; i++){
// cin >> tmp;
// l[i] = tmp*100;
// if (maxL < l[i]) maxL = l[i];
// tl += l[i];
// }
// start = 0;
// end = maxL / floorf(k*1.0/n+0.999999);
// while(end >= start){
// maxL = (start + end) / 2;
// maxK = count(maxL);
// if (maxK < k) end = maxL-1;
// else start = maxL+1;
// }
// if (maxK < k && maxL != 0) maxL--;
// tmp = maxL / 100.0;
// cout << setiosflags(ios::fixed) << setprecision(2) << tmp << endl;
// }
// return 0;
//}

int main(){
float tmp;
cin >> n >> k;
tl = 0;
maxL = 0;
for (int i = 0; i < n; i++){
scanf("%f", &tmp);
l[i] = tmp*100;
if (maxL < l[i]) maxL = l[i];
tl += l[i];
}
start = 0;
end = maxL;
while(end >= start){
maxL = (start + end) / 2;
maxK = count(maxL);
if (maxK < k) end = maxL-1;
else start = maxL+1;
}
if (maxK < k && maxL != 0) maxL--;
tmp = maxL / 100.0;
cout << setiosflags(ios::fixed) << setprecision(2) << tmp << endl;
return 0;
}
...全文
227 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Flouse 2007-09-13
  • 打赏
  • 举报
回复
明白,谢谢!

说点题外话,“不能收CSDN社区短信息,请莫浪费精力”

什么意思?
taodm 2007-09-13
  • 打赏
  • 举报
回复
编译器没打到最优化编译时,默认策略是可以差很远的。
VC和BCB都喜欢默认启用更多的优化项,以现实它们的程序“快”
到大家都最优化后,各编译器基本没区别。
所以,很正常。
Flouse 2007-09-13
  • 打赏
  • 举报
回复
你是指我的代码不够优化吗?

还是指调整编译器?
编译器在是PKU服务器上。
taodm 2007-09-13
  • 打赏
  • 举报
回复
你开到最优化了?

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧