OSDN Git Service

Add hash table to link virtual methods
authorMathieu Chartier <mathieuc@google.com>
Wed, 29 Oct 2014 01:23:02 +0000 (18:23 -0700)
committerMathieu Chartier <mathieuc@google.com>
Thu, 30 Oct 2014 21:57:00 +0000 (14:57 -0700)
commita9ca9ac444ceb2cf5e8bd5c98c1ed47f2a9a94dd
tree8766b8750c0983ace426811f8a2d9f68109bbda5
parent473484fac7bd53523f5503176ecc5955325a9731
Add hash table to link virtual methods

Added a hash table for turning the O(m*n) lookup average case to
O(m+n) average case. There is probably still some room for improvement.

Before:
WaitTime: 2121
WaitTime: 2051
WaitTime: 2134
WaitTime: 2104
WaitTime: 2237
WaitTime: 2391
4.99% art::MethodNameAndSignatureComparator::HasSameNameAndSignature(art::mirror::ArtMethod)
1.65% art::ClassLinker::LinkVirtualMethods(art::Thread*, art::Handle<art::mirror::Class>)

After:
WaitTime: 2038
WaitTime: 1965
WaitTime: 1979
WaitTime: 1976
WaitTime: 1957
WaitTime: 2004
0.46% art::MethodNameAndSignatureComparator::HasSameNameAndSignature(art::mirror::ArtMethod*)
1.39% art::ClassLinker::LinkVirtualMethods(art::Thread*, art::Handle<art::mirror::Class>)

Bug: 18054905
Bug: 16828525

Change-Id: If847afb7194daa05ace38d15862e4b871dfffae1
runtime/class_linker.cc
runtime/mirror/art_method-inl.h
runtime/mirror/art_method.h