summaryrefslogtreecommitdiffhomepage
path: root/lib/axlsx
diff options
context:
space:
mode:
authorPaul Kmiec <[email protected]>2023-05-22 21:10:08 -0700
committerPaul Kmiec <[email protected]>2023-05-22 21:10:08 -0700
commit75cdbc5b10d4813316b38a3588829debadc7fb7d (patch)
tree2bcc5f44a7250bb68c58be4efdfaa2c751d46ffc /lib/axlsx
parent6752225bbb8a9eec905ec02a98f1a25a309c404a (diff)
downloadcaxlsx-75cdbc5b10d4813316b38a3588829debadc7fb7d.tar.gz
caxlsx-75cdbc5b10d4813316b38a3588829debadc7fb7d.zip
Use #== and #eql? from BasicObject
Prior to https://github.com/caxlsx/caxlsx/pull/223, SimpleTypeList was just an object and inheritied #== / #eql? from BasicObject. These versions are fast as they just compare whether two objects sit in the same memory location. After https://github.com/caxlsx/caxlsx/pull/223, we started to inherit #== / #eql? from Array. These are slow as they crawl all the elements in the Array. This commit restores the original version of #== / #eql?.
Diffstat (limited to 'lib/axlsx')
-rw-r--r--lib/axlsx/util/simple_typed_list.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/axlsx/util/simple_typed_list.rb b/lib/axlsx/util/simple_typed_list.rb
index c3910fca..e74e25e3 100644
--- a/lib/axlsx/util/simple_typed_list.rb
+++ b/lib/axlsx/util/simple_typed_list.rb
@@ -15,6 +15,12 @@ module Axlsx
undef_method name
end
+ # We often call index(element) on instances of SimpleTypedList. Thus, we do not want to inherit Array
+ # implementation of == / eql? which walks the elements calling == / eql?. Instead we want the fast
+ # and original versions from BasicObject.
+ alias :== :equal?
+ alias :eql? :equal?
+
# Creats a new typed list
# @param [Array, Class] type An array of Class objects or a single Class object
# @param [String] serialize_as The tag name to use in serialization