Note on underwhelming performance when using a dynamically generated array of opcode functions specifying ".bind(this)" on every one (which is why I don't do it)
This commit is contained in:
parent
603b429c60
commit
a02454467b
4 changed files with 10 additions and 7 deletions
|
|
@ -157,9 +157,6 @@ function C1PVideo(parmsVideo, canvas, context, imgChars)
|
|||
* it still being labelled "experimental technology". Let's hope the browsers standardize
|
||||
* on this. I see other options emerging, like the CSS property "image-rendering: pixelated"
|
||||
* that's apparently been added to Chrome. Sigh.
|
||||
*
|
||||
* TODO: Investigate why imageSmoothingEnabled seems to have little effect on the imgChars
|
||||
* images we draw in updateWindow().
|
||||
*/
|
||||
var i, sEvent, asWebPrefixes = ['', 'moz', 'ms', 'webkit'];
|
||||
var fSmoothing = parmsVideo['smoothing'];
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @fileoverview Implements the PC8080 CPU component.
|
||||
* @fileoverview Controls the PC8080 CPU component.
|
||||
* @author <a href="mailto:Jeff@pcjs.org">Jeff Parsons</a>
|
||||
* @version 1.0
|
||||
* Created 2016-Apr-18
|
||||
|
|
|
|||
|
|
@ -2874,7 +2874,7 @@ CPUDef.opRST7 = function()
|
|||
* but I suspect that would vary quite a bit across JavaScript engines; for now, I'm putting my
|
||||
* money on array lookup.
|
||||
*/
|
||||
CPUDef.aOps = [
|
||||
CPUDef.aOps8080 = [
|
||||
/* 0x00-0x03 */ CPUDef.opNOP, CPUDef.opLXIB, CPUDef.opSTAXB, CPUDef.opINXB,
|
||||
/* 0x04-0x07 */ CPUDef.opINRB, CPUDef.opDCRB, CPUDef.opMVIB, CPUDef.opRLC,
|
||||
/* 0x08-0x0B */ CPUDef.opNOP, CPUDef.opDADB, CPUDef.opLDAXB, CPUDef.opDCXB,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @fileoverview Implements the PC8080 CPU module.
|
||||
* @fileoverview Implements the PC8080 CPU component.
|
||||
* @author <a href="mailto:Jeff@pcjs.org">Jeff Parsons</a>
|
||||
* @version 1.0
|
||||
* Created 2016-Apr-18
|
||||
|
|
@ -123,11 +123,17 @@ CPUSim.prototype.addHaltCheck = function(fn)
|
|||
/**
|
||||
* initProcessor()
|
||||
*
|
||||
* Interestingly, if I dynamically generate aOps as an array of functions bound to "this", using the bind()
|
||||
* method, overall performance is worse. You would think that eliminating the need to use the call() method
|
||||
* on every opcode function invocation would be helpful, but it's not. I'm not sure exactly why yet; perhaps
|
||||
* a Closure Compiler optimization is defeated when generating the function array at run-time instead of at
|
||||
* compile-time.
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUSim.prototype.initProcessor = function()
|
||||
{
|
||||
this.aOps = CPUDef.aOps;
|
||||
this.aOps = CPUDef.aOps8080;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue