是受(GWT)基类中方法数量影响的JavaScript对象的大小



我目前正在设计一些最终将在GWT中使用的API,我想知道在使用GWT编译Java代码后,Java类中方法的数量是否会影响JavaScript中单个Object实例的大小。

换句话说,如果我有一个抽象基类,比如说有200个方法,然后子类覆盖其中的2个,那么这200个方法的"成本"(内存使用)会为应用程序支付一次,还是每个子类实例支付一次?

在Java中,方法的数量不会影响Object的大小,但我不知道这在JavaScript中是如何工作的。

"200"这个数字来自于试图解决GWT中缺少反射的问题,但即使有一种方法可以获得"假反射",我仍然对答案感兴趣。

对于这种问题,在Stackoverflow上不会有比你自己的实验更好的答案:

编写一个包含200个方法的类,然后编写一个将其子类化并重写2个方法的方法。比较JS代码大小以获得基本想法(尽管这与实例大小不同)。使用"编译报告"可以更好地理解。然后尝试使用样式PRETTY或DETAILED进行编译,在编辑器中打开结果,并验证生成的代码是否重用了方法。(当然,也可以在OBFUSCATED模式下尝试)。

或者,实例化大量对象,并检查内存使用情况(一些浏览器提供了工具,例如。https://developers.google.com/chrome-developer-tools/docs/javascript-memory-profiling)

一般来说,确保你的方法确实被调用了——否则,编译器会对它们进行优化。

最新更新