这个问题既有理论要学习,也与我的代码有实际意义,但我很好奇在幕后发生了什么。
我创建了一个非常简单的对象,它将生成一个或两个期货,但每个初始化可能永远不会超过两个。如果你很好奇,期望是针对数据库调用而且对象只是辅助函数,以避免冗余代码。我可能会在我的代码的一部分中使用它,至少会在循环中运行数千次,速度很重要。从效率的角度来看,我想知道构建期货的最佳方式是什么。这些选项中的任何一个都明显更快或更可取吗?
手工建立期货,没有遗嘱执行人服务
为这么少的期货启动遗嘱执行人服务(在创建期货时初始化遗嘱执行人与收益的费用是多少?)
传入预先初始化的执行程序服务
我不知道执行人在幕后做了什么。我假设有一个执行程序服务消除了线程池和其他开销,这样传入预先初始化的ExecutorService
会得到(小)速度增益?但是,如果任何人都可以量化每个选项中可能带来的开支,那么我可能会看到一个优先于另一个可以满足我的好奇心的收益。我不是在寻找完整的基准测试,只是对所做的权衡的一般理解,这可能有助于告诉我足够的信息,我可以知道在基准测试之前哪种方法应该是我的首次尝试效率和优化,或者如果上面任何选项的费用最低,那么这也是一个很好的答案。
任何有趣的细节都会让我对期货和执行者有更多了解并有效地利用它们,这实际上是值得欢迎的;这个问题与学习当前代码一样重要。 (我怀疑我现在的代码会看到最小的速度提升;这正是激发好奇心的原因。)