用了半年chromium,说说心得

前一段参与了一个项目,项目内部使用了chromium作为基础库,这也是我第一次接触chromium,到现在差不多半年时间,这里说说使用心得。

优点

先进的多线程任务处理理念:少用共享内存,少用锁,多用任务分发,特定的task放在固定的sequence中。具体可以看这篇文章:

多线程开发中,多用消息传递,少用锁

跨平台,且功能强大,比如网络通信、进程间通信、如何启动进程并传递参数等,都有比较好用的封装。

有自己的一套编译构建规则GN,这貌似不能算作一个优点,毕竟学习成本高,但是它和bazel类似,你会感觉很熟悉。配置了很严格的编译参数,确保代码的健壮性。很多在其它地方(-Wall -Werror等)可以编译通过的代码,在chromium里都编译不通过,具体为啥我还没来得及深入研究。

内部集成了很多检测机制,编译时检查和运行时检查,可以检查某个操作是否在特定的sequence中,如果不在的话,debug模式时会触发断言。这样可以确保很多操作是线程安全的,进一步增强代码的健壮性。

具体可以看看这篇文章:https://aijishu.com/a/1060000000091082#item-2-1

缺点

整个chromium太大了,我自己本地看了下,除去.git,大概有60G左右,配置它的环境非常麻烦,需要翻墙,拉取它所有的依赖库也特别耗时。

因为项目特别大,编译时间特别长,特别是全量编译。

项目大,其实不适合做普通项目的基础库,普通项目用不到chromium的大多数功能,还要忍受它占用空间大,配置环境麻烦,编译时间长的缺点。而且编出来的可执行文件体积很大,特别是做SDK,如果对体积有要求的话,估计不能满足要求。

不能引用其他的第三方C++动态链接库或者静态链接库,因为它内部集成了一套自己魔改的C++源码,使用的这套C++源码做的编译,和外部的三方库不兼容。比如一个std::string,正常库中的符号应该是std::basic_string,而在chromium中,它却是std::__1::basic_string,导致和其他库不兼容,集成时候会报找不到相关符号。

因为它内部集成了一套自己魔改的C++源码,所以裁剪时也不太方便,其中的base、sql等模块裁剪还挺容易。

而有些模块需要强依赖这套内部的C++源码才能编译成功,无法裁剪,最近我也是在裁剪这块踩了好多坑。

google还提供了一个mini-chromium project,其实就是base的子集,就是给那些想用base作为基础库的项目使用的,但是这个project功能太少,用处不大。

遇到了问题在网上找答案不是很方便,毕竟用的人少。

建议

貌似edge浏览器就是在chromium的基础上开发的,但小项目建议就别用它了,太麻烦,个人看法,单纯从基础库的角度来说,不如boost方便。

不知道大家对chromium怎么看,可以留言聊聊。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序喵大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值