mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 14:04:26 +08:00
Name.get_code caching to make lookups faster
This commit is contained in:
@@ -1429,18 +1429,22 @@ class Name(Simple):
|
||||
So a name like "module.class.function"
|
||||
would result in an array of [module, class, function]
|
||||
"""
|
||||
__slots__ = ('names',)
|
||||
__slots__ = ('names', '_get_code')
|
||||
|
||||
def __init__(self, module, names, start_pos, end_pos, parent=None):
|
||||
super(Name, self).__init__(module, start_pos, end_pos)
|
||||
self.names = tuple(n if isinstance(n, NamePart) else
|
||||
NamePart(n[0], self, n[1]) for n in names)
|
||||
names = tuple(n if isinstance(n, NamePart) else
|
||||
NamePart(n[0], self, n[1]) for n in names)
|
||||
# Cache get_code, because it's used quite often for comparisons
|
||||
# (seen by using the profiler).
|
||||
self._get_code = ".".join(unicode(n) for n in names)
|
||||
self.names = names
|
||||
if parent is not None:
|
||||
self.parent = parent
|
||||
|
||||
def get_code(self):
|
||||
""" Returns the names in a full string format """
|
||||
return ".".join(unicode(n) for n in self.names)
|
||||
return self._get_code
|
||||
|
||||
@property
|
||||
def end_pos(self):
|
||||
|
||||
@@ -36,7 +36,10 @@ def main(args):
|
||||
run(code, i)
|
||||
|
||||
jedi.set_debug_function(notices=args['--debug'])
|
||||
cProfile.runctx('run(code, n)', globals(), locals(), sort=args['-s'])
|
||||
if args['--omit']:
|
||||
run(code, n)
|
||||
else:
|
||||
cProfile.runctx('run(code, n)', globals(), locals(), sort=args['-s'])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user