您是否通常假设任何给定对象上的toString()成本较低(即用于记录)?我做.这个假设有效吗?如果成本高,通常应该改变吗?以高成本制作toString()方法的正当理由是什么?我唯一一次关注字符串费用是因为我知道它与某些成员集合在一起.来自:http://jamesjava.blogspot.com/2007/08/tostring-cost.html
更新:另一种说法是:在调用之前,您是否经常考虑在任何给定类上调用toString的成本?
Sco*_*man 38
不,这不对.因为ToString()可以被任何人重载,他们可以做任何他们喜欢的事情.可以合理地假设ToString()应该具有低成本,但是如果ToString()访问执行"延迟加载"数据的属性,您甚至可能会在ToString()内部访问数据库.
Eli*_*ght 19
Java标准库似乎是为了保持toString调用的成本非常低而编写的.例如,Java数组和集合具有toString方法,这些方法不迭代其内容; 要获得这些对象的良好字符串表示,您必须使用Arrays.toString
或Collections.toString
从java.util
包中使用.
类似地,即使具有昂贵的equals方法的对象也具有廉价的toString调用.例如,java.net.URL
该类有一个equals方法,该方法利用互联网连接来确定两个URL是否真正相等,但它仍然具有简单且常量的toString方法.
所以是的,廉价的toString调用是常态,除非你使用一些违反惯例的奇怪的第三方软件包,你不应该担心这些需要很长时间.
当然,你不应该担心性能,直到你发现你的程序花费的时间太长,即便如此,你应该使用一个分析器来弄清楚花费的时间如此之长,而不是担心前面的这类事情.时间
归档时间: |
|
查看次数: |
2575 次 |
最近记录: |