前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编译一个1000万行代码的c++文件是什么样的体验?

编译一个1000万行代码的c++文件是什么样的体验?

作者头像
灯珑LoGin
发布2023-10-18 10:41:40
2710
发布2023-10-18 10:41:40
举报
文章被收录于专栏:龙进的专栏

最近在b站看到这么一个视频:《哪位大神来帮我编译一下这1000万行代码?》

看了一下这个视频,它的主要内容就是,自动生成了一个10000万行的if/else语句的代码文件,功能就是把输入的字符前后调转一下,比如输入“1234”,就输出“4321”。

看样子这个up主并不能编译这个代码,因此我想帮他一把(bushi

编译环境

由于这代码太长了,因此可以想到它需要很多的内存。因此我们在Linux环境下更容易编译这段代码,谁叫windows内存占用高呢?

处理器:AMD R7-4800H

内存:三星DDR4 3200Mhz 64GB

系统:Ubuntu 22.04

开搞

up主给出的代码文件的地址:https://wwd.lanzoue.com/itqlr0gvqfih

这是个压缩包,下载下来之后,解压可以看到这个文件占了260MB的空间:

真的是“重量级工程”了。

最开始我尝试使用gcc编译器进行编译,然而,失败了!在预处理阶段,GCC编译器占了64G内存(包括swap分区)之后都没能解决这个代码,这个内存利用效率真的是太垃圾了。

接着,我换成了clang编译器。编译器进程峰值内存占用60.1GB,平均每100万行代码占用6GB。最终经过1小时40分钟,把这个代码编译了出来。因为单文件只能单核编译,所以比较慢。

使用的编译指令如下:

代码语言:javascript
复制
clang -c 1000w-code.cpp -Wno-invalid-source-encoding

生成的object文件大小高达1.2GB!

接着,进行链接的步骤,把stdc++库链接进去,生成最终的可执行文件:

代码语言:javascript
复制
clang 1000w-code.o -o 1000w-code -lstdc++

然后得到了一个295MB的可执行文件:

笑死,真的经过九九八十一难,才得到了这个文件。我们运行它一下吧:

由于这位up主是用GB2312编码保存的代码,而Linux默认是UTF8,我也没做编码转换,因此中文就显示不出来了。功能就是把输入的字符前后调转一下,笑死,这就是“小而美”的代码吗哈哈哈哈。

下载

编译完的结果在这里下载:(只能在linux上面运行)

链接: https://pan.baidu.com/s/1uVlrjj0xCahhaZFIugjiuw?pwd=ss8s

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年11月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编译环境
  • 开搞
  • 下载
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档