V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  secondwtq  ›  全部回复第 68 页 / 共 124 页
回复总数  2471
1 ... 64  65  66  67  68  69  70  71  72  73 ... 124  
2019-12-20 20:52:55 +08:00
回复了 joyqi 创建的主题 电影 星球大战不好看
这一部好像是挺扯的
不过这只是电影而已,世上有善始却没有善终的东西又何止电影呢
LLVM 有点硬核啊 ... 只运行这个 Pass: http://llvm.org/docs/MergeFunctions.html 就能实现楼主要的效果 ... 只是默认没打开

clang++ -O0 -Xclang -fmerge-functions ./ipo.cpp

原 IR:
%13 = call i32 @_ZL8bisearchIiEiP5ReferIT_Ei(%class.Refer* %4, i32 10)
%15 = call i32 @_ZL8bisearchIjEiP5ReferIT_Ei(%class.Refer.0* %5, i32 10)

优化后的 IR:
%13 = call i32 @_ZL8bisearchIiEiP5ReferIT_Ei(%class.Refer* %4, i32 10)
%15 = call i32 bitcast (i32 (%class.Refer*, i32)* @_ZL8bisearchIiEiP5ReferIT_Ei to i32 (%class.Refer.0*, i32)*)(%class.Refer.0* %5, i32 10)

另外真心佩服这个文档写得比代码还多的 ... 说实话 LLVM 里面文档写得这么详细的 Pass 不多
GCC 我不熟悉,还是去某东买茴香豆吧 ...
http://hubicka.blogspot.com/2015/04/GCC5-IPA-LTO-news.html

"On the other hand proving that two functions are identical in compiler is much harder than comparing a binary blobs with relocations though. Not only the instructions needs to match each other, but all the additional meta-data maintained by the compiler needs to be matched and merged. This include type based aliasing analysis information, polymorphic call contexts, profile, loop dependencies and more. For this reason the pass does not replace Gold's feature."

可能是因为这个 ... 大概也能解释为啥 MSVC 也是在 linker 里面做
哦对了,如果想要避免 Inlining 造成的干扰,可以在函数上加 __attribute__((noinline))
查了下,这个叫 Identical Code Folding
不过我现在只能通过 gold 来触发,暂时没搞懂为啥编译器自己不做掉:
gcc -fuse-ld=gold -ffunction-sections -Wl,--icf=safe ./ipo.cpp
2019-12-18 19:01:39 +08:00
回复了 tediorelee 创建的主题 Visual Studio Code vscode 的设置上竟然戴上了圣诞帽 hhh
俄罗斯表示我们一月份圣诞我们也要加 …
2019-12-18 18:54:41 +08:00
回复了 yayiji 创建的主题 Android Android Jetpack 是什么意思?
捷达
2019-12-17 22:46:53 +08:00
回复了 ClassicOldSong 创建的主题 分享创造 造了个新轮子 ef.qt ,让我们用写前端的手感来写 qt
@skadi 说起鸽了的 Ruby 项目我就想起 https://en.wikipedia.org/wiki/Why_the_lucky_stiff 这个 ... 不过貌似不是
不如问问什么 QQ 啊搜狗输入法啊迅雷啊 360 啊之类的有没有”自动缓存文件“的功能,还靠点谱
2019-12-17 22:13:21 +08:00
回复了 everlost 创建的主题 C++ c++的 shared_ptr 大家用的多吗
shared_ptr 的最大性能问题是多线程同时操作引用计数
shared_ptr 自身的最大问题是它给你一种可以不用管内存管理问题的假象,让程序员变得过于懒

因为 shared_ptr 的语义是 shared ownership,C++ 要求程序员把 ownership 这坨东西理清楚再写代码,不想折腾的去写 Go 和 JS,shared_ptr 不是合适的解决方案

@icylogic 也就 F2EX 只会瞎吹 ...
2019-12-17 21:59:31 +08:00
回复了 depress 创建的主题 随想 你觉得一个人的品行和他的专业成就应该分开看待么?
郎咸平那都是小打小闹,ReiserFS 了解一下
2019-12-17 21:11:51 +08:00
回复了 ClassicOldSong 创建的主题 分享创造 造了个新轮子 ef.qt ,让我们用写前端的手感来写 qt
C++ 写逻辑就说的通了 ...
GUI 还有一个问题是集合的处理,就是把数组渲染成控件列表,数组更新时控件如何更新的问题(或者可以扩展到任何 non-trivial 的数据绑定)
React 和 Angular 是根据 key 做 diff,需要整个遍历一遍数组。WPF 稍微聪明一点,搞了个 ObservableCollection
Qt 需要显式操作组件,Cocoa 不用 Binding 的话好像也是
不知道 ef.qt 怎么处理
2019-12-17 01:44:09 +08:00
回复了 bshu 创建的主题 程序员 唉,细节,细节,还是细节啊
政治觉悟,政治觉悟,还是政治觉悟啊
人家做浏览器又不是为了这些“细节“
2019-12-17 00:40:48 +08:00
回复了 NGPONG 创建的主题 C++ 广大的 V 站朋友们,学习 c/c++ 哪里的教程比较权威且全面
C 是需要学的,不过学一点就够了
上来学 C++ 只怕是入另一个坑
(不如看下 CoreCLR

咳咳,说正经的,我建议楼主先抛开什么 C C++ 的,从功利的角度想想自己到底要学什么,学了有什么用
单纯的”技术提升“很模糊,而且 C++ 活也不多
(其实我觉得可以先从英语做起 ...)
这个中文名字里面的”预排序“是翻译夹的私货么
2019-12-17 00:08:14 +08:00
回复了 ClassicOldSong 创建的主题 分享创造 造了个新轮子 ef.qt ,让我们用写前端的手感来写 qt
话说这个 event handler 的代码是写 C++ 还是 JS ...
2019-12-16 23:59:57 +08:00
回复了 vevlins 创建的主题 编程 lua 的学习成本?
@guxingke Lambda 应该是编译成类吧,到 JVM 层面和其他类还有区别么
2019-12-16 23:30:21 +08:00
回复了 vevlins 创建的主题 编程 lua 的学习成本?
”闭包如何实现、虚拟机的实现、垃圾回收算法“如果你是冲着这个去的话,那可以
Lua 本身的话推荐 https://blog.codingnow.com
不过真想折腾的话还是看完之后像 #3 老哥一样自己撸一个

@guxingke 我没记错的话 JVM 和闭包应该没关系吧
我的话会先考虑考研,工作选择会多一点
然后找个 965 的活 ...
1 ... 64  65  66  67  68  69  70  71  72  73 ... 124  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2519 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 45ms · UTC 11:06 · PVG 19:06 · LAX 04:06 · JFK 07:06
Developed with CodeLauncher
♥ Do have faith in what you're doing.