Здравствуйте, watchmaker, Вы писали:
W>Здравствуйте, IROV.., Вы писали:
IRO>>Да поиск по хеш таблице идет довольно быстро, но все же почему не хранить "последний" проверяемый индекс в таблице и сначала проверить на него, я думаю это должно сэкономить время
W>В комментариях к реализации (см. dictnotes) CPython2 есть такой абзац. В CPython3 уже нет. Ну и в коде вообще нет. Возможно проверили и оптимизация не зажгла. Возможно и не проверяли.
IRO>>(проверять только на is то есть указатели)
IRO>>что я упустил?
W>Знаешь про ABA?
W>Проверять указатели можно, но их равенство не говорит об том, что это тот же объект, что и был до этого. Пример:[python]
Ты прав, но только в том случае если я хранил бы PyObject * как кеш, в данном случае я буду сравнивать два корректных указателя которые живут в данной системе. И таких проблем не должно быть, ибо они указывают на живые объекты(объект).
W>А так, кажется, что всех уже приучили в таких ситуациях использовать .get(key, None), или .setdefault, или defaultdict, что в общем-то работает не особо плохо. Хотя,согласен, что это всё же не идеально, так как переносит проблему с интерпретатора на программиста.
Вот и говорю, что решать на уровне интерпретатора, особенно скриптового языка основной задачей которого упростить написание кода (без задней мысли про оптимизацию)