我在我的应用程序中经常使用Long/ Integerdata类型来构建Generic数据类型.我担心使用这些包装器对象而不是原始数据类型可能对性能有害,因为每次它需要创建一个昂贵的操作对象.但似乎我别无选择(当我必须使用带有泛型的原始物)而不是仅使用它们.
但是,如果你可以建议我能做些什么来改善它,那还是会很棒的.或任何方式,如果我可以避免它?
还有什么可能是缺点?
建议欢迎!
在我之后重复. "用Java创建对象并不是一项昂贵的操作".
您过早地优化了应用程序.更好的方法是实现其使用自然的方式Integer和Long,然后点击个人资料,以确定瓶颈在哪里.如果分析器告诉您使用Integer和Long是性能问题,那么请查看解决此问题的方法.
如果您确定Integer并Long确实存在问题,可以执行以下操作:
寻找一个实现原始类型"集合"的类库; 例如Trove.但请注意,此类集合类型的API 与其后代不兼容java.util.Collection.
使用Integer.valueOf(int)和Long.valueOf(long),而不是new Integer(int)和new Long(long).这些valueOf方法使用常用对象的缓存来减少对象创建的数量.
@Rex Kerr的评论是,这是一个可怕的建议.他(我认为)说OP应该优化他的应用以减少使用,Integer并且Long在他知道这将是一个性能问题之前.我不同意.
此时(当他问这个问题时),OP并不知道他的应用程序需要优化.如果应用程序运行"足够快"而没有任何优化,那么任何开发人员花在优化上的时间都会花在其他方面.
此时,OP不知道性能瓶颈在哪里.如果他们不处理这些值,那么优化这方面将是浪费时间.请注意,一般来说,完全依靠直觉告诉您瓶颈在哪里或可能在哪里是一个坏主意.
@Rex Kerr认为,由于过度使用Integer和修改/重构代码以修复性能问题需要做很多工作Long.这根本不是真的.一个体面的IDE可以轻松地在中小型应用程序中进行此类更改.
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |