V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  chaoschick  ›  全部回复第 5 页 / 共 17 页
回复总数  322
1  2  3  4  5  6  7  8  9  10 ... 17  
以前我一直以为编译器优化能提升的性能很小,这次真是长见识了
@diivL #include <sys/time.h>
#include <stdio.h>

int main(int argc, char* argv[]) {
struct timeval start_time, end_time;

gettimeofday(&start_time, NULL);

long count = 2147483640;
long i = 0;

do {
++i;
} while (--count);

gettimeofday(&end_time, NULL);

int total_time = 1000000 * (end_time.tv_sec - start_time.tv_sec) + (end_time.tv_usec - start_time.tv_usec);
printf("%d us", total_time);
printf("\n");
printf("%.3f ms", (double) total_time / 1000);
printf("\n");

printf("%l", i);
return 0;
}
[admin@iZt4ngr7j75qbzgg9ilsifZ c]$ gcc duff2.c -O3 && ./a.out
1 us
0.001 ms

这是优化掉 for 循环了吗?
@diivL [admin@iZt4ngr7j75qbzgg9ilsifZ c]$ gcc duff2.c -O3 && ./a.out
3688484 us
3688.484 ms
public class DuffDevice {

private static long duff2(long count) {
long i = 0;
do {
++i;
} while (--count >0);
return i;
}

public static void main(String[] args) {
long duff;
long start, end;
DuffDevice duffDevice = new DuffDevice();

start = System.currentTimeMillis();
duff = duff2((long) Integer.MAX_VALUE - 7);
end = System.currentTimeMillis();
System.out.println(duff + " " + (end - start) + " ms");
}
}

输出
2147483640 639 ms

我改了一下 i 值的类型 耗时 变长了
所以 应该没把循环优化掉吧
@tool2d [admin@iZt4ngr7j75qbzgg9ilsifZ c]$ cat duff2.c
#include <sys/time.h>
#include <stdio.h>

int main(int argc, char* argv[]) {
struct timeval start_time, end_time;

gettimeofday(&start_time, NULL);

long count = 2147483640;
volatile long i = 0;

do {
++i;
} while (--count);

gettimeofday(&end_time, NULL);

int total_time = 1000000 * (end_time.tv_sec - start_time.tv_sec) + (end_time.tv_usec - start_time.tv_usec);
printf("%d us", total_time);
printf("\n");
printf("%.3f ms", (double) total_time / 1000);
printf("\n");

printf("%l", i);
return 0;
}
[admin@iZt4ngr7j75qbzgg9ilsifZ c]$ gcc duff2.c && ./a.out
4621705 us
4621.705 ms
@tool2d 我试试
@xtreme1 能解释一下为什么两者性能如此悬殊的原因吗
162 天前
回复了 jiaomeng 创建的主题 OpenAI 文心一言只会废话,不能解决问题
不止废话 还没有上下文
塞翁失马焉知非福
162 天前
回复了 monkeyWie 创建的主题 JetBrains 我吐了, IDEA 新版本真的坑死人
2023.1 路过
实际尝试一下 亏了的话就当买个教训 不要留下遗憾 出事时能及时止损抽身离开就好
162 天前
回复了 hypoxia001 创建的主题 问与答 请问有 虚拟短信 这种服务或者平台吗
我司提供这种服务 但价格略贵
162 天前
回复了 dai269619118 创建的主题 程序员 想找一个自动生成视频的 api
有网站已经做出来了 api 就不知道有没有了
162 天前
回复了 LittleDust 创建的主题 编程 你每天编程多久?
8h
EBS 重复了
163 天前
回复了 Nosub 创建的主题 推广 华为云服务器 2 核 4G5M 云服务器 198/年
性价比太低
163 天前
回复了 Nosub 创建的主题 推广 华为云服务器 2 核 4G5M 云服务器 198/年
太贵了
只是单纯用于加密数据的话 cloudflare 的 ssl 代理就够用了
164 天前
回复了 newtonMiku 创建的主题 问与答 求助,学校实习不给请假怎么办
多学一门技术不亏 塞翁失马 焉知非福
164 天前
回复了 Oy2 创建的主题 问与答 大家用过阿里云轻量吗
需要先初始化环境 比方说移除阿里云的各种监控 升级系统 重新激活 selinux 等等之类的
1  2  3  4  5  6  7  8  9  10 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1615 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 16:53 · PVG 00:53 · LAX 09:53 · JFK 12:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.