架构师如何平衡悟道1:性能与易用性的取舍之道?

摘要:架构的终极目标是:降本增效 架构的工作内容是:性能和易用性的权衡 假如框架每一个环节的易用性有那么一点微不足道的提升,整体开发效率的提升是这一点的N倍。普通框架的消息handler void on_login(int msg_id,
架构的终极目标是:降本增效 架构的工作内容是:性能和易用性的权衡 假如框架每一个环节的易用性有那么一点微不足道的提升,整体开发效率的提升是这一点的N倍。 // 普通框架的消息handler void on_login(int msg_id, char* buf, int len) { // 在业务线程创建消息消息类 auto msg = new find_class(msg_id); // 在业务线程反序列化 msg.encode(buf, len); // 业务操作 msg.xxx ... // 在业务线程销毁消息对象 delete msg; } void on_skill(int msg_id, char* buf, int len) { // 在业务线程创建消息消息类 auto msg = new find_class(msg_id); // 在业务线程反序列化 msg.encode(buf, len); // 定位玩家对象 auto player = find_player(msg.player_id); // 业务操作 msg.xxx ... // 在业务线程销毁消息对象 delete msg; } // 注册消息handler reg_handler("msg_login", on_login); reg_handler("msg_skill", on_skill); // 优秀框架的消息handler // 在框架层的“反序列线程”执行: // 创建消息对象、反序列化和销毁消息对象 // 充分释放“业务线程”的CPU空间提高处理业务逻辑能力 void on_login(msg_login* msg) { // 直接业务操作 msg.xxx ... } // 在框架层的“反序列线程”执行: // 创建消息对象、反序列化和销毁消息对象 // 充分释放“业务线程”的CPU空间提高处理业务逻辑能力 void on_skill(msg_skill* msg, player_t* player) { // 直接业务操作 player.xxx = msg.xxx ... } // 注册“普通”消息handler reg_handler("msg_login", on_login); // 注册“玩家”消息handler reg_player_handler("msg_skill", on_skill);