Redian新闻
>
狗家又open source一个底层C++ library
avatar
狗家又open source一个底层C++ library# Programming - 葵花宝典
p*u
1
号称要成为狗家所有的projects的底层,什么Tensorflow,protobuf之类全要换上。不
过它家的code base看着太费劲,不同种类的methods起名的format还不同,蛋疼。
市面上现在有Boost,POCO,EA家的EASTL,F家的Folly,Bloomberg的BDE,大家对STL
有这么不满意吗?C++的底层轮子已经太多了吧,谁来搞点上面的?
avatar
p*u
2
大概看了看,就是从Chromium的底层library里面提取出来的,没啥新鲜东西。
avatar
p*u
5


【在 t*******c 的大作中提到】
: 是说这个吗:https://abseil.io/
avatar
w*g
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++的底层轮子已经太多了吧,谁来搞点上面的?

avatar
p*u
8
F家用jemalloc,都差不多。

【在 w***g 的大作中提到】
: 看了下内容, 对普通人基本没有意义. 根本犯不着折腾.
: 他们要open出一个unicode的string库我就认他们牛x.
: tcmalloc还是不错的.
:
: STL

avatar
c*r
9
unicode 的话 IBM ICU 够好了。

【在 w***g 的大作中提到】
: 看了下内容, 对普通人基本没有意义. 根本犯不着折腾.
: 他们要open出一个unicode的string库我就认他们牛x.
: tcmalloc还是不错的.
:
: STL

avatar
T*i
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代码,比自己吭哧吭哧写,强太多。
avatar
T*i
11
不懂unicode有啥困难的?百八十行就能utf8到utf32自由转换。我在只有32k内存的mcu
上都能用。
那个lock free queue做的不对。太复杂。use case也没啥意义。我想wdong应该明白。
avatar
p*u
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的唯一依赖。现在貌似没好的替代方案。整个
: 行业之吹牛扯淡,可见一斑。

avatar
T*i
13
所以我根本不搞开源,做一个东西给所有人用,是很扯淡的事情。不如开源代码片段更
好。


: 开源要照顾到所有用户,be as generic as possible,还要尽可能flexible,
不能满

: 足魏老师你的需要是很正常的。

: list



【在 p*u 的大作中提到】
: 开源要照顾到所有用户,be as generic as possible,还要尽可能flexible,不能满
: 足魏老师你的需要是很正常的。
:
: list

avatar
w*g
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应该明白。

avatar
w*g
15
我是开源, 但是不卖力写文档. 这样这个东西保证以后自己能用就行.

【在 T********i 的大作中提到】
: 所以我根本不搞开源,做一个东西给所有人用,是很扯淡的事情。不如开源代码片段更
: 好。
:
:
: 开源要照顾到所有用户,be as generic as possible,还要尽可能flexible,
: 不能满
:
: 足魏老师你的需要是很正常的。
:
: list
:

avatar
T*i
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的轮子估计速度在中间.
: 一个系统里这种性能瓶颈一般也就一两个. 如果真到了这一步, 针对特殊
: 情况特殊写一下, 一般应该也能接受吧.

avatar
p*u
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很难,不如推
: 广理念来的实在。

avatar
T*i
18
凡是话不好好说,都是反人类的。
任何强制性的理念,都是洗脑。
本来这些都是艺术,既不是科学,也不是技术。运用之妙,存乎一心。

【在 p*u 的大作中提到】
: functional programming专门干这个,但是程序写起来太费力。
avatar
w*g
19
其实是C++需要一个immutable的数据结构。不知道为啥这个东西没人去做。

【在 p*u 的大作中提到】
: functional programming专门干这个,但是程序写起来太费力。
avatar
p*u
20
凡是没人搞的东东,基本都是吃力不讨好的。

【在 w***g 的大作中提到】
: 其实是C++需要一个immutable的数据结构。不知道为啥这个东西没人去做。
avatar
T*i
21
纯粹的immutable性能极差。根本不可行。
所以C 连string都不是immutable的。


: 凡是没人搞的东东,基本都是吃力不讨好的。



【在 p*u 的大作中提到】
: 凡是没人搞的东东,基本都是吃力不讨好的。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。