Re[6]: [Python] dict find
От: IROV..  
Дата: 23.02.16 14:38
Оценка:
Здравствуйте, watchmaker, Вы писали:

W>Здравствуйте, IROV.., Вы писали:


W>>>Приведи пример реализации на псевдокоде такой проверки.

W>
IRO>>  if d->m[d->index].key == key : return d->m[d->index].value
W>


W>Где оптимизация-то? Почему этому коду не хватает миллиарда итераций чтобы вышеприведённая строчка начала срабатывать?
W>key = 'abc'
W>d = {''.join(key): "Hello"}
W>assert key in d # True

W>for i in xrange(10**9):
W>    if key in d:
W>        print(d[key])

W>


А в питоне оказывается уже есть такая оптимизация только она общего характера на все объекты
    if (MCACHE_CACHEABLE_NAME(name) &&
        PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG)) {
        /* fast path */
        h = MCACHE_HASH_METHOD(type, name);
        if (method_cache[h].version == type->tp_version_tag &&
            method_cache[h].name == name)
            return method_cache[h].value;
    }


это можно найти в _PyType_Lookup(PyTypeObject *type, PyObject *name)
я не волшебник, я только учусь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.