Hallo pl,
das ist subjektiv schwer zu sehen, eine integrierte Laufzeitmessung wäre praktisch. Den Speicherverbrauch erkenne ich nicht richtig.
Aber mir scheint, dein base64-Encoder hinkt. Mit new String() erzeugst Du einen Wrapper um den primitiven string, und bei jedem Zugriff muss er über den Wrapper laufen. Das macht deinen b64a-String sehr langsam.
Ersetze mal b64a: new String('ABC..89+/=')
durch b64a: 'ABC..89+/')
Die Laufzeit drittelt sich fast. Dein Decoder leidet auch an Stringzugriffen, da geht was mit Uint8Array und Lookup-Tables.
Zuerst Deine Klasse, dann meine, dann etwas Testcode. Da ist eine Zuweisung an TestObjekt, da wählst Du aus was verwendet wird. Testgröße gibt an, wie groß der Teststring wird (Testgröße+1 verdoppelt den Teststring). Laufzeitmessungen erscheinen in der Konsole.
Rolf
sumpsi - posui - clusi