楼主:
Ommm5566 (56天團)
2017-12-25 10:11:01※ 引述《tofuflower (无)》之铭言:
: 修正:经 Sirctal, chiaming0914, elements 指正,GC 这点是我错误论述。
: 下面用双引号匡起来的内容就是被指正有问题的部分,请不要尽信。
: 保留争议原文让后续读者知道这里原先的争论点是什么。
: "但用 C++ 就要自己处理 GC 问题。而我认为自己刻的 GC 能比 JVM GC 优秀的工程师应
: 该是少数中的少数,因此把 GC 问题也列入考量再加上 JIT 技术的话, C++ 效能并不
: 一定总是能乐胜 Java,当然主要还是要看使用情境。"
Java因为有gc需要持续作检查 效能已经输一截
run-time效能取决于内存释放时机
Java批次释放绝对是输compiler时期就决定释放的c++
不过Java有一种情况可以有逼近C++的效能
就是customized garbage collector 也是靠人为去决定释放时机
C++释放不好有两个原因
1. 模组没切好 这个状况就算是java的gc一样难以判断何时回收
2. 不会写delete或free 你有三个选择
第一是从此放弃需要delete/free的语言
第二是C++11以来就提供了smart pointer像是unique_ptr 和shared_ptr
第三个好好地学内存管理
multi-thread的部分
因为cpu运算速度早就饱和才有free lunch is over这句
所以近年平行算法正夯 基本上语言现在都要提供不同等级的平行工具
smart pointer 已经简化事情太多 只要搞清楚ownership几乎不需要在操心管理
用smart pointer就不需要new delete了但我遇过的同事大部分都还是不太爱用习惯问题而已
我们几乎已经强制用了 安全性高太多了 语意又非常明确尤其 unique ptr
所以我们几乎都只用 unique ptr 很多多情境下 unique ptr+raw ptr就够用
作者:
senjor (哞哞)
2017-12-25 12:22:00学C#的是不是也应该要学学ptr的相关知识比较好?
某些极端特例会需要自己管理资源,例如把smart ptr放到union内,只是应该不会没事这样弄
作者:
Clangpp (Clang++)
2017-12-25 16:54:00妈的 我听朋友说他公司还有老rd嫌c++11太新咧
作者:
testPtt (测试)
2017-12-25 17:43:00我们几乎都只用 auto ptr ^_^
作者:
kwpn (ITSST)
2017-12-25 21:35:00使用auto_ptr的缺点是 要了解它的潜在问题才不会用错
deprecated的意思不是不支援,只是不宜使用,未来版本可能拿掉到17才拿掉