You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ha...@apache.org on 2016/08/03 07:40:43 UTC
[06/12] git commit: [flex-asjs] [refs/heads/develop] - [Performance]
instance level length var access adds a small speedup over requesting
byteLength from the ArrayBuffer
[Performance] instance level length var access adds a small speedup over requesting byteLength from the ArrayBuffer
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/f791f02c
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/f791f02c
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/f791f02c
Branch: refs/heads/develop
Commit: f791f02cf2f2cf4dcd25c6cae924923da20f0df1
Parents: 6288c2d
Author: greg-dove <gr...@gmail.com>
Authored: Mon Jul 25 18:14:17 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Mon Jul 25 18:14:17 2016 +1200
----------------------------------------------------------------------
.../flex/org/apache/flex/utils/BinaryData.as | 23 ++++++++++++--------
1 file changed, 14 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f791f02c/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as
index 769b006..d44ac0e 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/BinaryData.as
@@ -56,6 +56,7 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
public function BinaryData(bytes:ArrayBuffer = null)
{
ba = bytes ? bytes : new ArrayBuffer(0);
+ _len = ba.byteLength;
}
/**
@@ -481,9 +482,9 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
{
//do we need to check offset and length and sanitize or throw an error?
- if (length == 0) length = ba.byteLength - _position ;
+ if (length == 0) length = _len - _position ;
//extend the destination length if necessary
- var extra:int = offset + length - destination.ba.byteLength;
+ var extra:int = offset + length - destination._len;
if (extra > 0)
destination.growBuffer(extra);
var src:Uint8Array = new Uint8Array(ba, _position,length);
@@ -546,7 +547,7 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
}
COMPILE::JS
{
- if (idx >= ba.byteLength) {
+ if (idx >= _len) {
setBufferSize(idx+1);
}
getTypedArray()[idx] = byte;
@@ -713,6 +714,9 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
}
}
+ COMPILE::JS
+ private var _len:uint;
+
public function get length():int
{
@@ -722,7 +726,7 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
}
COMPILE::JS
{
- return ba.byteLength;
+ return _len;;
}
}
@@ -743,7 +747,7 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
COMPILE::JS
protected function setBufferSize(newSize):void
{
- var n:uint = ba.byteLength;
+ var n:uint = _len;
if (n != newSize) {
//note: ArrayBuffer.slice could be better for buffer size reduction
//looks like it is only IE11+, so not using it here
@@ -754,6 +758,7 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
ba = newView.buffer;
if (_position > newSize) _position = newSize;
_typedArray = newView;
+ _len = newSize;
}
}
/**
@@ -772,7 +777,7 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
}
COMPILE::JS
{
- return ba.byteLength - _position;
+ return _len - _position;
}
}
@@ -837,13 +842,13 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
COMPILE::JS
{
- setBufferSize(ba.byteLength + extra);
+ setBufferSize(_len + extra);
}
}
COMPILE::JS
protected function ensureWritableBytes(len:uint):void{
- if (_position + len > ba.byteLength) {
+ if (_position + len > _len) {
setBufferSize( _position + len );
}
}
@@ -998,7 +1003,7 @@ public class BinaryData implements IBinaryDataInput, IBinaryDataOutput
private function mergeInToArrayBuffer(offset:uint, newBytes:Uint8Array):uint {
var newContentLength:uint = newBytes.length;
var dest:Uint8Array;
- if (offset + newContentLength > ba.byteLength) {
+ if (offset + newContentLength > _len) {
dest = new Uint8Array(offset + newContentLength);
dest.set(new Uint8Array(ba, 0, offset));
dest.set(newBytes, offset);