Skip to content

Commit 3bf4761

Browse files
committed
debugpy: Performance - aviod method access.
Signed-off-by: Jos Verlinde <jos_verlinde@hotmail.com>
1 parent 5c41be6 commit 3bf4761

1 file changed

Lines changed: 14 additions & 15 deletions

File tree

python-ecosys/debugpy/debugpy/server/pdb_adapter.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -203,33 +203,32 @@ def should_stop(self, frame, event: str, arg):
203203
self.hit_breakpoint = False
204204

205205
# Cache frame attributes to reduce lookup overhead
206-
frame_code = frame.f_code
207-
filename = frame_code.co_filename
208-
lineno = frame.f_lineno
206+
_frame_code = frame.f_code
207+
_filename = _frame_code.co_filename
208+
_lineno = frame.f_lineno
209209

210-
# Check for exact filename match first
211-
if filename in self.breakpoints and lineno in self.breakpoints[filename]:
210+
# Optimize dictionary lookups - use .get() to avoid double lookup
211+
file_breakpoints = self.breakpoints.get(_filename)
212+
if file_breakpoints and _lineno in file_breakpoints:
212213
self.hit_breakpoint = True
213214
return True
214215
else:
215216
# file not (yet) matched - this is slow so we do not want to do this often.
216217
# TODO: use builins - sys.path method to find the file
217218
# if we have a path match , but no breakpoints - add it to the file_mappings dict simplify this check
218-
if not filename in self.breakpoints:
219-
self.breakpoints[filename] = {} # Ensure the filename is in the breakpoints dict
220-
if not filename in self.file_mappings:
221-
self.file_mappings[filename] = self._filename_as_debugger(filename)
222-
# self._debug_print(
223-
# f"[PDB] add mapping for :'{filename}' -> '{self.file_mappings[filename]}'"
224-
# )
219+
if file_breakpoints is None:
220+
self.breakpoints[_filename] = {} # Ensure the filename is in the breakpoints dict
221+
if _filename not in self.file_mappings:
222+
self.file_mappings[_filename] = self._filename_as_debugger(_filename)
225223

226224
# Check stepping
227-
if self.step_mode == STEP_INTO:
225+
_step_mode = self.step_mode
226+
if _step_mode == STEP_INTO:
228227
if event in (TRACE_CALL, TRACE_LINE):
229228
self.step_mode = None
230229
return True
231230

232-
elif self.step_mode == STEP_OVER:
231+
elif _step_mode == STEP_OVER:
233232
if event == TRACE_LINE and frame == self.step_frame:
234233
self.step_mode = None
235234
return True
@@ -240,7 +239,7 @@ def should_stop(self, frame, event: str, arg):
240239
else:
241240
self.step_mode = None
242241

243-
elif self.step_mode == STEP_OUT:
242+
elif _step_mode == STEP_OUT:
244243
if event == TRACE_RETURN and frame == self.step_frame:
245244
self.step_mode = None
246245
return True

0 commit comments

Comments
 (0)