Sha*_*ank 15 java parameters optimization object
我被分配到优化应用程序性能的工作.
通常需要将16-25个参数传递给构造函数,并在那里设置它们.我想为此创建一个类和对象,并将这些值设置为对象然后传递.阅读会很好.但它对我的任务(即性能优化)有什么用呢?
Era*_*ran 15
它可能会稍微改善性能,但主要好处是提高代码的可读性.具有16-25个参数的构造函数不可读,并且非常难以使用.
当然,您应该只引入有意义的新类(即参数彼此相关).没有必要将15-26个不相关的参数推送到一个类只是为了将它们传递给构造函数.
Erw*_*out 14
由此产生的性能差异(如果有的话)不太可能引人注意.
如果您的任务是解决性能问题,那么您的第一份工作就是找到问题所在.您可以通过分析应用程序来实现.你有没有做过,并证明问题出在参数传递中?
在现代软件中,在调用函数上有25个松散变量,然后将它们明确地传递给方法或者ctor,这是相当不寻常的.
通常情况下,在OO设计中,这些变量已经被打包成一个类(或几个类),按其逻辑职责分组.
并且由于Java通过引用传递对象,因此在堆栈上传递单个对象引用可能会带来一些性能优势(推送到堆栈的变量更少).然而,真正的好处是代码可读性和维护.
但必须注意的是,这样做会要求传递的对象的类在使用者和服务之间共享 - 这可能是一个问题,这取决于传输类正在建模的内容(例如,它是数据传输对象,业务实体,视图模型,XML/JSON序列化对象等?).如果调用者和被调用者之间的共享类型违反了您的体系结构,那么您通常会将25个变量映射到另一个合适的规范类(或类,再次观察SRP重构问题)并传递此(这些),而不是.此时,将没有性能优势,但将保留可读性/可维护性优势.