Re: 答复: [cpp] 请问一下 如何判断一个8位数是否是有效日期
analyst
qiaojie at gmail.com
Fri Sep 29 20:36:09 CST 2006
这样争下去可是没完没了了,看来要云风承认错误几乎是不可能的啊。
就算在特殊情况下用bool数组确实快了一倍,但是必须注意到这个日期判断函数本身只占用不到200个时钟周期,你取个随机数都需要上千个时钟周期了,在一个真是的运行环境中,必须有日期的输入、判断、输出结果这三步才能构成一个有意义的程序,再怎么简单的日期输入和输出都远远不止这200个时钟周期,反映到最终的测试结果上就几乎看不出差别了。就比如你的测试用例,如果不去掉数据产生的时间,那差别会变得很小。因此,在这个问题上讨论性能是没有意义的。
其实我说的主要问题在于简洁性,因为你的函数需要事先调用一个init函数,在一个稍微复杂一点的程序里要让用户手工在mian函数里调用init是非常糟糕的事情,尤其是做为库程序的一部分的时候,让用户去手工调用init会很讨厌。当然用C++可以写一个全局类自动调用初始化函数,但那样又会无端增加代码,而且还得考虑全局对象初始化顺序问题,无端生出枝节。写个测试用例当然不需要考虑那么多问题,但是集成到实际项目里就要面对很多问题,当然是越简单越好。
在06-9-29,云风 <cloudwu at gmail.com> 写道:
>
>
> 我不认为我在特意构造测试数据,我的第一次和第2次贴出的测试,都属于常规的测试数据,而且都不算全面和完善。只是你利用我前面构造的一个简易测试数据来写程序而已。我想表达的是,在这个问题的求解过程中,你的算法增加的除法和判断会相当影响效率。之所以在第一个测试中体现不出来,只是因为大量的测试案例被
> >1231 这个拦截下来了。那只是因为我给出的测试程序给的数据过于特殊而已。(90% 的数据都不需要进一步的判断)
>
> 我在前文中已经写过:如果程序着重于判断大小月是否有 31 号这一点上,采用我的算法可以提高接近一倍的速度。
>
> 其实前面我在贴出我自己的测试程序时已经写过,其针对的是你的这一个观点
>
> "非常怀疑云风对于优化的直觉判断,在一个本来就有一次除法两次比较一次查表的函数里再增加一次除法和一次比较会导致性能上有一个数量级的差距吗?这种结论小学生都知道是在扯淡。"
>
> 正是在这个算法上增加了除法和比较,会导致性能一倍的下降。
>
> 另外,无论从代码的可读性还是从代码篇幅上看,我都不认为我写的程序不够简明。
>
> 在 06-9-25,analyst<qiaojie at gmail.com> 写道:
> >
> 这.......刻意构造对自己有利的测试数据来证明性能,实在有点过分了,我是不是还应该根据你的测试数据特点来调整我的执行路径以达到优化目的呢?我只关注如何用最简洁明了的方法实现我们想要的功能,至于这种性能之争毫无意义可言。
> >
> >
>
> --
> http://blog.codingnow.com
>
> _______________________________________________
> Cpp mailing list
> Cpp at codingnow.com
> http://codingnow.com/mailman/listinfo/cpp
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20060929/7e179eee/attachment.html
More information about the Cpp
mailing list