一个同事写的程序,在程序中调用了很多的Write_log函数,是不是影响性能 write_log函数就是打一大串话,他写的目的是这样的write_log(“程序运行到了这里");他说他这样写是为了跟踪程序,如果出了错,他好查找,你们觉得这样好吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 调试过程中如果只是为了跟踪程序的走向,可以用TRACE,release版就不会有了,不会影响程序的性能 建议用TRACE,有个tracewin的东西比较好用 TRACE在调试实时系统时并不好,所以log自有其存在道理。而且如果不是performance critical的系统,写log并不影响太大。 不知道楼主说得是什么时候的调试如果是开发时候的调试,当然可以如果是客户在使用时如果发现了错误,以便于开发人员找到错误的地方的话,甚好当然,不知道楼主说的是在什么地方写的这些语句,是在try里边? 还是在catch里边呢?这两种方法当然有其不同之处不过,就算了,性能的影响应该不会太大。但不知道楼主的程序是什么程序,如果是大型游戏或者电信里边的实施程序,则要考虑一下了 一、最好能用类似于TRACE宏的方法,在发布版中自动将这些语句去掉;二、至于性能,只要你那个系统不是非常关键(比方说每秒几千访问量的网站),一般影响不大,可以不管它;三、最后,write_log函数的输出是一个文本文件吧?那么记住,一定要想办法限制文本文件的大小。随着系统的运行,log越来越多,当达到上百M的时候,对write_log对性能的影响就很大了。 write_log是我们的自己写的函数,他当然不时仅仅在catch中使用,他在程序的肯定会执行的地方也用这个函数,release的时候不会去掉,或者基本不去掉,不是trace函数 如果实时性高又面对大量并发,建议还是去掉write_log,可以定义一个常量(可由某界面来控制这个常量),当常量为True写,否则不写,这样对调试和运行都有好处。 TRACE只在MFC程序里有用,,, 对于需要长时间运行的程序write_log是必须的,不然根本无法调试 #ifndef _DEBUG#define write_log(wl) (void)(0)#endif TRACE对试运行的release版程序没用,这个阶段log是绝对必要的,除非你的程序就是hello world那么简单,就算是为避免IO操作的开销,也可以定义log级别,搞成可配置的,检查这个级别的if判断不会有什么性能损失的。 调试通讯的时候这种方法挺好,不影响程序执行,执行完之后再看log文件。 VC 怎样在不设置子窗口的情况下使窗口紧贴桌面? 如何查找并关闭IE浏览器窗口? mov,mpeg2视频控制处理,大侠给点意见 线程同步&&资源独占&&优先权的一个问题 弱弱的问!怎么对话框移动后获取的坐标怎么还是没移动之前的 高手请进,关于TCP接收数据的问题 怎样把别的程序的TOOLBAR资源COPY到自己的程序中去? win32编程初学者的问题:对话框的如何居中及WM_PAINT消息如何处理? lpfnwndProc指针的问题 如何在CListCtrl中加入CheckBox? 关于网页密码的问题! 请问:有没有这样的控件!!!
如果是开发时候的调试,当然可以
如果是客户在使用时如果发现了错误,以便于开发人员找到错误的地方的话,甚好当然,不知道楼主说的是在什么地方写的这些语句,是在try里边? 还是在catch里边呢?这两种方法当然有其不同之处不过,就算了,性能的影响应该不会太大。但不知道楼主的程序是什么程序,如果是大型游戏或者电信里边的实施程序,则要考虑一下了
#define write_log(wl) (void)(0)
#endif
除非你的程序就是hello world那么简单,就算是为避免IO操作的开销,
也可以定义log级别,搞成可配置的,检查这个级别的if判断不会有什么性能损失的。