在Java中模拟6502处理器时,对象开销是否重要?(使用包装器而不是基本类型)

在Java中模拟6502处理器时,对象开销是否重要?(使用包装器而不是基本类型),java,performance,memory,emulation,wrapper,Java,Performance,Memory,Emulation,Wrapper,我正在用Java编写一个仿真器(目前正在6502处理器上工作),我计划对一些基本类型使用我自己的包装器,因为它使我能够更轻松地完成一些事情。问题是,我计划模拟一个完整的NES控制台,CPU可以访问65536字节的内存。基本字节为1字节,包装至少为8字节。创建一个65536字节(原语)与65536字节(包装器)的数组将导致至少8倍的内存使用量,而不考虑寄存器等。不仅如此,我只能假设使用对象而不是基元类型会更慢。我现在想知道的是,既然现代处理器都有Gig的RAM,那么仅仅为了让自己更轻松一点而使用至

我正在用Java编写一个仿真器(目前正在6502处理器上工作),我计划对一些基本类型使用我自己的包装器,因为它使我能够更轻松地完成一些事情。问题是,我计划模拟一个完整的NES控制台,CPU可以访问65536字节的内存。基本字节为1字节,包装至少为8字节。创建一个65536字节(原语)与65536字节(包装器)的数组将导致至少8倍的内存使用量,而不考虑寄存器等。不仅如此,我只能假设使用对象而不是基元类型会更慢。我现在想知道的是,既然现代处理器都有Gig的RAM,那么仅仅为了让自己更轻松一点而使用至少8倍的内存是否不好(并且可能会稍微减小模拟器的大小)?或者我应该保持它的效率,只使用基本类型吗?

与此CPU的速度相比,您当前的机器要快得多,您真的不需要担心性能。您可能会不厌其烦地编写异常糟糕的代码来解决这样的问题。:)

我怀疑JVM本身的内存占用将使您为6502仿真分配的内存相形见绌

这类问题经常被引用

过早的优化是万恶之源


我会先让您的实现正确,然后再确定您可以/应该进行的任何优化。

实际上,由于OOP压缩,对
字节的引用至少是,而且通常仍然是4个字节。是的,可能是对标准Java字节包装类的引用,但我使用自己的。我怀疑这意味着它仍然是8字节。不,引用是引用。。。这是一个低级JVM优化。它以4字节而不是8字节的形式存储普通对象指针。无论如何,无论您使用哪种对象,您都将缓存所有256个可能的值,并且内存占用几乎完全独立于对象的大小。问题是用Java标记的,所以只需一句注释:Scala功能允许您扩展基本类型,而不会造成任何性能损失。因此,你不会丢失“正常”操作符,比如“+”,它保持代码干净(不需要包装器),并且可以添加自己的“运算符”。你期望得到什么好处?这个“抽签”是什么意思?我想它与压缩/缩小某物有关,但你的意思是什么?这是简单的英语:)“A侏儒B”==“B与A相比看起来像个侏儒”。啊,就是这样。我很少听说侏儒这个词被用作动词,所以我很困惑。