用代码编译跟exe直接跑性能差很多
用代码编译和exe直接跑性能差很多?
c++基于socket的一个服务器程序,按f5后可承载几十万客户端连接,用exe跑只能承载几千连接了,这是为什么?怎么解决?
------解决方案--------------------
F5是DEBUG状态。EXE如果过是Release的,那么这种问题,太常见了。
一般是内存越界,溢出,或者是用完的句柄未关闭等等这类的问题导致的。
------解决方案--------------------
确定f5和exe跑的是同一个版本的么
------解决方案--------------------
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
用depends.exe查看exe依赖的dll
------解决方案--------------------
还是得从程序中找原因。
c++基于socket的一个服务器程序,按f5后可承载几十万客户端连接,用exe跑只能承载几千连接了,这是为什么?怎么解决?
------解决方案--------------------
F5是DEBUG状态。EXE如果过是Release的,那么这种问题,太常见了。
一般是内存越界,溢出,或者是用完的句柄未关闭等等这类的问题导致的。
------解决方案--------------------
确定f5和exe跑的是同一个版本的么
------解决方案--------------------
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
用depends.exe查看exe依赖的dll
------解决方案--------------------
还是得从程序中找原因。