当前位置:  开发笔记 > 编程语言 > 正文

一般认为toString()成本低是否安全?

如何解决《一般认为toString()成本低是否安全?》经验,为你挑选了4个好方法。

您是否通常假设任何给定对象上的toString()成本较低(即用于记录)?我做.这个假设有效吗?如果成本高,通常应该改变吗?以高成本制作toString()方法的正当理由是什么?我唯一一次关注字符串费用是因为我知道它与某些成员集合在一起.来自:http://jamesjava.blogspot.com/2007/08/tostring-cost.html

更新:另一种说法是:在调用之前,您是否经常考虑在任何给定类上调用toString的成本?



1> Scott Hansel..:

不,这不对.因为ToString()可以被任何人重载,他们可以做任何他们喜欢的事情.可以合理地假设ToString()应该具有低成本,但是如果ToString()访问执行"延迟加载"数据的属性,您甚至可能会在ToString()内部访问数据库.



2> Eli Courtwri..:

Java标准库似乎是为了保持toString调用的成本非常低而编写的.例如,Java数组和集合具有toString方法,这些方法不迭代其内容; 要获得这些对象的良好字符串表示,您必须使用Arrays.toStringCollections.toStringjava.util包中使用.

类似地,即使具有昂贵的equals方法的对象也具有廉价的toString调用.例如,java.net.URL该类有一个equals方法,该方法利用互联网连接来确定两个URL是否真正相等,但它仍然具有简单且常量的toString方法.

所以是的,廉价的toString调用是常态,除非你使用一些违反惯例的奇怪的第三方软件包,你不应该担心这些需要很长时间.

当然,你不应该担心性能,直到你发现你的程序花费的时间太长,即便如此,你应该使用一个分析器来弄清楚花费的时间如此之长,而不是担心前面的这类事情.时间



3> Ovid..:

找出答案的最佳方法是分析您的代码.但是,不要担心特定功能有很高的开销,而是(通常)更好地担心应用程序的正确性,然后对其进行性能分析(但要小心现实世界的使用,并且您的测试设置可能根本不同) ).事实证明,程序员通常会猜测他们的应用程序真的很慢,并且他们经常花费大量时间来优化不需要优化的东西(消除那个只占用应用程序时间的0.01%的三重嵌套循环)浪费).

幸运的是,Java有很多开源的分析器.



4> Shog9..:

您是否通常假设任何给定对象上的toString()成本较低?我做.

为什么要这么做?简介如果你正在运行到性能问题的代码; 它会为你节省大量时间来处理错误的假设.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有