Java Generics和C++模板,如果生成的代码大小很重要,那么它们是首选的?

Avr*_*dis 0 c++ java generics templates

如果我们必须选择使用C++模板或Java Generics来实现解决方案并忽略剩余的语言问题(例如执行时间),那么如果生成的代码的大小很重要,那么哪个是首选

我读到在Java Generics中,类型参数在编译后被抛出而没有存储在元数据中,这是否会导致更小的程序?

use*_*421 5

首先,您需要了解这些事情并不相似.事实上它们几乎是两极相反的:

  • C++模板通过编译时和链接时的代码生成生成新类型.
  • Java Generics在编译时通过类型代数限制现有类型.

从这两个事实可以看出一切.Java Generics在空间或时间上增加零成本; C++模板增加了两种成本.熟练内联和使用非模板化基类(旧void *技巧)可以最大限度地降低C++空间成本,甚至可以消除它,但需要非常小心,并期待C++编译器实际上如何实现内联.