【发布时间】:2013-04-10 17:28:00
【问题描述】:
所以我试图解析通过 RS-232 串行端口读取的字符串,而 Substring 函数是罪魁祸首。它是 O(N) 运行时间吗?有没有更快的方法将字符串切成碎片然后我可以解析?
【问题讨论】:
-
我简直不敢相信,如果您通过 RS-232 发送字符串,瓶颈可能在
String.Substring()... 您需要如何解决?反正肯定是O(N)
所以我试图解析通过 RS-232 串行端口读取的字符串,而 Substring 函数是罪魁祸首。它是 O(N) 运行时间吗?有没有更快的方法将字符串切成碎片然后我可以解析?
【问题讨论】:
String.Substring()... 您需要如何解决?反正肯定是O(N)
我上次在没有完整引用的情况下引用了我的手腕,所以这次我会正确地做:
程序员会浪费大量时间来思考或担心程序中非关键部分的速度,而在考虑调试和维护时,这些提高效率的尝试实际上会产生强烈的负面影响。我们应该忘记小的效率,比如大约 97% 的时间:过早的优化是万恶之源。然而,我们不应该放弃那关键的 3% 的机会
正如 Matthew Watson 所指出的,我非常怀疑 Substring 是您需要担心的。
现在,在您看来,这似乎是一个居高临下的答案,但如果程序员一直在用“必须快”进行编码;那么在我看来,他们的大脑并没有专注于他们应该做的事情,即编写解决特定问题的功能代码。
编写明显足够快的代码,然后正如引用所说的那样 - 如果性能确实存在问题(例如,您的发票运行需要 5 个小时来处理 20 个 pdf),然后您可能需要开始查看占用时间的内容。
【讨论】: