use*_*545 0 boost stl visual-studio-2013 websocket++
我已经构建了一个非常基本的EXE,它使用Websocketpp客户端,它只连接到Websocket服务器,并发送和接收消息.我用过VS 2013.
我注意到EXE的大小是巨大的.它类似于2.3 MB的Release和6 MB的Debug.
关于如何减小EXE大小的任何想法?
WebSocket ++作者在这里.您引用的尺寸似乎是正确的球场.请记住,像echo_server(它在linux上产生大约1MB的可执行文件)这样的"非常基本的样本"比基于程序源中的~50行所做的要多得多.
开箱即用的任何基于WebSocket ++/Asio的程序都是基于高性能事件的客户端/服务器系统,包括用于DNS解析,IPv4和IPv6的代码,定时器,SHA1/MD5散列,base64编码,UTF8验证,日志记录,线程安全和URI,HTTP和多个WebSocket协议版本的解析器.仅仅因为您只使用这些功能来回显消息并不会使这成为一个简单的程序.
关于该主题的一些观察/说明:
由于模板的工作方式,WebSocket ++,ASIO和STL的代码被编译到您的程序中,而不是坐在外部链接的库中.这可能使WebSocket ++或Asio程序看起来比链接到外部库的程序更大.
#1中描述的情况有时最终会比外部库更有效,因为该程序将只包含代码实际使用的库部分,而不是所有部分.即如果您没有实例化客户端端点,则不会包含客户端代码.如果您的配置禁用TLS加密,日志记录或线程安全功能,则它们也不会包含在内.再次由于模板的工作方式,这可以双向进行.例如:包含客户端和服务器的程序将有一些可能不必要的重复.
WebSocket ++代码的大小很大程度上与您使用的不同端点配置的数量以及每个配置中启用的选项相关.无论您的程序做什么,它们都代表一个固定的大小.如果你的程序很少,它们将占很大比例的代码.如果你的程序做了很多,这个比例会缩小.
WebSocket ++是相当模块化的(虽然现在没有很好地记录).如果您真的关心代码大小(可能是小型嵌入式系统?)并且实际上并不需要Asio和WebSocket ++开箱即用的所有功能,您可以设置一个自定义配置,删除许多功能或替换它们你自己的空间优化实现.
假设您只需要在没有DNS查找的情况下为一个非TLS连接提供服务,并且在没有记录的保证单线程程序中没有安全超时.您可以基于本机OS套接字库实现自己的网络传输策略,该库不包含Asio所做的所有内容.您还可以删除不需要的锁定/并发和记录器策略.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |