Code Monkey home page Code Monkey logo

co's Introduction

Basic

CO 是一个优雅、高效的 C++ 基础库,支持 Linux, Windows 与 Mac 平台。

CO 追求极简、高效,不依赖于 boost 等三方库,仅使用了少量 C++11 特性。

  • CO 包含如下的功能组件:
    • 基本定义(def)
    • 原子操作(atomic)
    • 快速随机数生成器(ramdom)
    • LruMap
    • 基本类型快速转字符串(fast)
    • 高效字符流(fastream)
    • 高效字符串(fastring)
    • 字符串操作(str)
    • 命令行参数与配置文件解析库(flag)
    • 高效流式日志库(log)
    • 单元测试框架(unitest)
    • 时间库(time)
    • 线程库(thread)
    • 协程库(co)
    • 高效 json 库
    • 高性能 json rpc 框架
    • hash 库
    • path 库
    • 文件系统操作(fs)
    • 系统操作(os)

特别致谢

  • co 协程库切换 context 的相关代码取自 rukitbox,特别表示感谢!

参考文档

亮点功能

这是一个真正为程序员考虑的配置文件库,支持自动生成配置文件,支持整数类型带单位 k, m, g, t, p,不区分大小写。

这是一个超级快的本地日志系统,直观感受一下:

log vs glog google glog co log
win2012 机械硬盘 1.6MB/s 180MB/s
win10 ssd 3.7MB/s 560MB/s
mac ssd 17MB/s 450MB/s
linux ssd 54MB/s 1023MB/s

上表是单线程连续打印 100w 条 info 日志(50 字节左右)的测试结果,co/log 几乎快了 glog 两个数量级。

为何如此快?一是 log 库内部基于比 sprintf 快 8-25 倍的 fastream 实现,二是 log 库几乎没有什么内存分配操作。

这是一个速度堪比 rapidjson 的 json 库,如果使用 jemallocparsestringify 的性能会进一步提升。

co/json 目前对 json 标准的支持远不如 rapidjson 全面,仅能满足程序员的基本需求,但更容易使用。

这是一个 golang 风格的协程库,内置多线程调度,是网络编程之良品,居家必备。

这是一个基于协程与 json 的高性能 rpc 框架,支持代码生成,简单易用,单线程 qps 能达到 12w+。

这是一个与 co::Pool 配套使用的模板类。co::Pool 是一个协程安全的池子,内部存储 void* 指针。

卡卡洛特构造时从 Pool 拉取一个指针,析构时将指针放回 Pool,同时,卡卡洛特还自带智能指针属性:

co::Pool p;

void f() {
    co::Kakalot<Redis> rds(p);         // 卡卡洛特现在变身为 Redis* 指针
    if (rds == NULL) rds = new Redis;  // 对卡卡洛特重新赋值
    rds->get("xx");                    // 卡卡洛特调用 redis 的 get 操作
}

go(f);

贡献代码

  1. co/base 目录下修改或新增代码,确保 libbase 编译通过.
  2. 若有必要,在 co/unitest/base 目录下修改或新增单元测试用例,确保单元测试全部通过.
  3. 若有必要,在 co/test 目录下修改或新增测试代码.

编译方法请参考上述 pdf 参考文档,非常感谢大家的支持!

友情合作

co's People

Contributors

frankhb avatar frederick-vs-ja avatar idealvin avatar leedehai avatar tigerlee avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.