p*u 发帖数: 2454 | 1 号称要成为狗家所有的projects的底层,什么Tensorflow,protobuf之类全要换上。不
过它家的code base看着太费劲,不同种类的methods起名的format还不同,蛋疼。
市面上现在有Boost,POCO,EA家的EASTL,F家的Folly,Bloomberg的BDE,大家对STL
有这么不满意吗?C++的底层轮子已经太多了吧,谁来搞点上面的? |
p*u 发帖数: 2454 | 2 大概看了看,就是从Chromium的底层library里面提取出来的,没啥新鲜东西。 |
t*******c 发帖数: 288 | |
t*******c 发帖数: 288 | |
p*u 发帖数: 2454 | 5 嗯
【在 t*******c 的大作中提到】 : 是说这个吗:https://abseil.io/
|
p*u 发帖数: 2454 | 6 这种轮子现在不胜枚举了都。
【在 t*******c 的大作中提到】 : 另外看微博上推荐的concurrent lock-free queue: : https://github.com/cameron314/concurrentqueue
|
w***g 发帖数: 5958 | 7 看了下内容, 对普通人基本没有意义. 根本犯不着折腾.
他们要open出一个unicode的string库我就认他们牛x.
tcmalloc还是不错的.
STL
【在 p*u 的大作中提到】 : 号称要成为狗家所有的projects的底层,什么Tensorflow,protobuf之类全要换上。不 : 过它家的code base看着太费劲,不同种类的methods起名的format还不同,蛋疼。 : 市面上现在有Boost,POCO,EA家的EASTL,F家的Folly,Bloomberg的BDE,大家对STL : 有这么不满意吗?C++的底层轮子已经太多了吧,谁来搞点上面的?
|
p*u 发帖数: 2454 | 8 F家用jemalloc,都差不多。
【在 w***g 的大作中提到】 : 看了下内容, 对普通人基本没有意义. 根本犯不着折腾. : 他们要open出一个unicode的string库我就认他们牛x. : tcmalloc还是不错的. : : STL
|
c******r 发帖数: 512 | 9 unicode 的话 IBM ICU 够好了。
【在 w***g 的大作中提到】 : 看了下内容, 对普通人基本没有意义. 根本犯不着折腾. : 他们要open出一个unicode的string库我就认他们牛x. : tcmalloc还是不错的. : : STL
|
T********i 发帖数: 2416 | 10 STL基本数据结构有vector,deque,unordered_map/set就好了。其它的那些比如list
还要额外分配内存,蛋疼。直接剽窃freebsd的queue一个头文件过来就好。
其实我是反对C 那套假模假样的。一个轮子拿来,比学一个新语言都费劲,那种我看
都不看。我选轮子很简单。要没外部依赖的,四个文件以内。
说一些根本的。stl的fstream类,竟然不能cloexec。只要有多进程场合就可能造成
leak。所以我不能用。
曾经boost的sleep_for都不用clock monotonic。改改系统时间就可能长睡不醒。
golang也有过这个毛病。貌似stl早期也有。
我现在就缺filesystem。这是我对boost的唯一依赖。现在貌似没好的替代方案。整个
行业之吹牛扯淡,可见一斑。
在我看来,基本上所有的开源库,架构都有巨大问题。我个人都不能用。nodejs从依赖
libev到自己做libuv。libuv已经不错了。但是他的架构还是不适合服务器端多核IO,
主要是threading model的问题。我不得不自己做一套edge triggered epoll的轮子,
达到前后端架构的统一。
protocol buffer也是,代码都要自动生成。没办法我需要更高的灵活性。更简洁的代
码。只能自己做一套。一个C 类,可以很复杂。如有需要,几行代码,serialize到另
一端,可能是java, js, swift。
事实上,开源对我帮助很大。虽然架构不能用,代码可以随便抄。成百上千行的各种
parser,copy paste再review代码,比自己吭哧吭哧写,强太多。 |
|
|
T********i 发帖数: 2416 | 11 不懂unicode有啥困难的?百八十行就能utf8到utf32自由转换。我在只有32k内存的mcu
上都能用。
那个lock free queue做的不对。太复杂。use case也没啥意义。我想wdong应该明白。 |
p*u 发帖数: 2454 | 12 开源要照顾到所有用户,be as generic as possible,还要尽可能flexible,不能满
足魏老师你的需要是很正常的。
list
【在 T********i 的大作中提到】 : STL基本数据结构有vector,deque,unordered_map/set就好了。其它的那些比如list : 还要额外分配内存,蛋疼。直接剽窃freebsd的queue一个头文件过来就好。 : 其实我是反对C 那套假模假样的。一个轮子拿来,比学一个新语言都费劲,那种我看 : 都不看。我选轮子很简单。要没外部依赖的,四个文件以内。 : 说一些根本的。stl的fstream类,竟然不能cloexec。只要有多进程场合就可能造成 : leak。所以我不能用。 : 曾经boost的sleep_for都不用clock monotonic。改改系统时间就可能长睡不醒。 : golang也有过这个毛病。貌似stl早期也有。 : 我现在就缺filesystem。这是我对boost的唯一依赖。现在貌似没好的替代方案。整个 : 行业之吹牛扯淡,可见一斑。
|
T********i 发帖数: 2416 | 13 所以我根本不搞开源,做一个东西给所有人用,是很扯淡的事情。不如开源代码片段更
好。
: 开源要照顾到所有用户,be as generic as possible,还要尽可能flexible,
不能满
: 足魏老师你的需要是很正常的。
: list
【在 p*u 的大作中提到】 : 开源要照顾到所有用户,be as generic as possible,还要尽可能flexible,不能满 : 足魏老师你的需要是很正常的。 : : list
|
w***g 发帖数: 5958 | 14 你说得对, 是我糊涂了.
lock free的东西boost也有. 特殊情况下是有用的, 但确实没啥普世意义.
我以前做节目推荐的时候有这种情况, 就是内存中要维护一个节目表.
然后推荐请求来了需要扫描这个节目表, 这个频率非常高.
同时偶尔会有新节目来, 需要添加到这个表里面. 表是append-only的.
我的做法是用rw-lock, 可以应付需求.
如果自己手写,因为是append-only, 可以很容易做到lock free, 那样最快.
我估计用lock free的轮子估计速度在中间.
一个系统里这种性能瓶颈一般也就一两个. 如果真到了这一步, 针对特殊
情况特殊写一下, 一般应该也能接受吧.
mcu
【在 T********i 的大作中提到】 : 不懂unicode有啥困难的?百八十行就能utf8到utf32自由转换。我在只有32k内存的mcu : 上都能用。 : 那个lock free queue做的不对。太复杂。use case也没啥意义。我想wdong应该明白。
|
w***g 发帖数: 5958 | 15 我是开源, 但是不卖力写文档. 这样这个东西保证以后自己能用就行.
【在 T********i 的大作中提到】 : 所以我根本不搞开源,做一个东西给所有人用,是很扯淡的事情。不如开源代码片段更 : 好。 : : : 开源要照顾到所有用户,be as generic as possible,还要尽可能flexible, : 不能满 : : 足魏老师你的需要是很正常的。 : : list :
|
T********i 发帖数: 2416 | 16 你这个需求。其实就是因为STL vector不是immutable的。
自己做一个append-only list好了。就是一个pointer array,64K pointer。每个
pointer entry指向一个array with 64K items。最多4G items。
10分钟不到,写一个template class,而且是lock-free的。
其实immutability在C/C++中很重要。但是这东西光靠framework enforce很难,不如推
广理念来的实在。
【在 w***g 的大作中提到】 : 你说得对, 是我糊涂了. : lock free的东西boost也有. 特殊情况下是有用的, 但确实没啥普世意义. : 我以前做节目推荐的时候有这种情况, 就是内存中要维护一个节目表. : 然后推荐请求来了需要扫描这个节目表, 这个频率非常高. : 同时偶尔会有新节目来, 需要添加到这个表里面. 表是append-only的. : 我的做法是用rw-lock, 可以应付需求. : 如果自己手写,因为是append-only, 可以很容易做到lock free, 那样最快. : 我估计用lock free的轮子估计速度在中间. : 一个系统里这种性能瓶颈一般也就一两个. 如果真到了这一步, 针对特殊 : 情况特殊写一下, 一般应该也能接受吧.
|
p*u 发帖数: 2454 | 17 functional programming专门干这个,但是程序写起来太费力。
【在 T********i 的大作中提到】 : 你这个需求。其实就是因为STL vector不是immutable的。 : 自己做一个append-only list好了。就是一个pointer array,64K pointer。每个 : pointer entry指向一个array with 64K items。最多4G items。 : 10分钟不到,写一个template class,而且是lock-free的。 : 其实immutability在C/C++中很重要。但是这东西光靠framework enforce很难,不如推 : 广理念来的实在。
|
T********i 发帖数: 2416 | 18 凡是话不好好说,都是反人类的。
任何强制性的理念,都是洗脑。
本来这些都是艺术,既不是科学,也不是技术。运用之妙,存乎一心。
【在 p*u 的大作中提到】 : functional programming专门干这个,但是程序写起来太费力。
|
w***g 发帖数: 5958 | 19 其实是C++需要一个immutable的数据结构。不知道为啥这个东西没人去做。
【在 p*u 的大作中提到】 : functional programming专门干这个,但是程序写起来太费力。
|
p*u 发帖数: 2454 | 20 凡是没人搞的东东,基本都是吃力不讨好的。
【在 w***g 的大作中提到】 : 其实是C++需要一个immutable的数据结构。不知道为啥这个东西没人去做。
|
T********i 发帖数: 2416 | 21 纯粹的immutable性能极差。根本不可行。
所以C 连string都不是immutable的。
: 凡是没人搞的东东,基本都是吃力不讨好的。
【在 p*u 的大作中提到】 : 凡是没人搞的东东,基本都是吃力不讨好的。
|