一些个人经验, 服务器程序相关
时间:2010-09-07 来源:史莱姆
1.FILE I/O
1) configure files,
configure 读写往往在程序启动和结束的时候, 所以我选择使用同步IO, tinyxml
2) logging
同步IO 速度, 第一次写文件 200~300 micros(包括磁盘寻道时间), 之后每次写入 20 micros (无磁盘寻道时间)
i) thread file i/o, 就是把文件写入放入专门的logging线程, 使用 blocking queue + 事件(或者timer)
ii) async file i/o, 没找到理想的实现, 那个log4cpp async logger速度很慢
iii) ipc-share memory, 就是建立专门的写文件进程,使用IPC通信,个人感觉应该比同步IO快,待测试
iv) ETW (windows), 速度大概 15 micros。 BTW, 这个东西主要做性能调试的
2. RPC
基于性能的考虑, 主要使用以下两种方式
1) socket
i) 连接不多的情况, socket select, 应用场景一般是连接其他的服务器
ii) 大量连接的情况, boost.asio 或者 linux epoll 和 windows iocp
2) message queue
大量连接的情况 AMQP - QPID 性能最好的一种message queue, 而且容易做cluster
3. Database
SQLite
4. 调试相关
1) tracing - windows
http://www.cnblogs.com/slime/archive/2010/08/06/1793617.html
2) console output for GUI - windows
http://www.cnblogs.com/slime/archive/2010/08/26/1808629.html
3) performance timer - windows/linux
http://www.cnblogs.com/slime/archive/2010/06/26/1765610.html
4) sync logger - windows / linux 有性能问题,不过只调试用还可以
http://www.cnblogs.com/slime/archive/2010/06/26/1765607.html
5) event tracing for windows
目前正在学习, 还不太会用。 主要是怎么有效的分析kernel 事件