Действительно ли Active Directory осведомлен о транзакции?

Я имел большой опыт, работающий скомпилированные regex 1000-е времен по сравнению с компиляцией на лету, и не заметил заметного различия. Очевидно, это анекдотично, и конечно не большой аргумент против компиляция, но я нашел, что различие незначительно.

РЕДАКТИРОВАНИЕ: После быстрого взгляда на фактический код библиотеки Python 2.5 я вижу, что Python внутренне компилирует И КЭШИ regexes каждый раз, когда Вы используете их так или иначе (включая вызовы к re.match()), таким образом, Вы действительно только изменяетесь, КОГДА regex компилируется и не должен экономить много времени вообще - только время, это берет для проверки кэша (ключевой поиск на внутреннем dict тип).

От модуля re.py (комментарии являются моими):

def match(pattern, string, flags=0):
    return _compile(pattern, flags).match(string)

def _compile(*key):

    # Does cache check at top of function
    cachekey = (type(key[0]),) + key
    p = _cache.get(cachekey)
    if p is not None: return p

    # ...
    # Does actual compilation on cache miss
    # ...

    # Caches compiled regex
    if len(_cache) >= _MAXCACHE:
        _cache.clear()
    _cache[cachekey] = p
    return p

я все еще часто предварительно компилирую регулярные выражения, но только связывать их с хорошим, допускающим повторное использование именем, не для любого ожидаемого увеличения производительности.

16
задан Ronald Wildenberg 7 August 2009 в 14:19
поделиться

1 ответ

Короткий ответ - нет. ActiveDirectory - это, по сути, реализация LDAP (с некоторыми причудливыми расширениями, но по сути это все еще LDAP). Ни протоколы LDAP, ни спецификации не содержат концепции транзакций, так что это действительно невозможно.

Можно было бы эмулировать транзакции на стороне клиента, но вам придется сделать это самостоятельно или использовать Spring, который, я считаю, сделает это за вас - очевидно, это не так безопасно, как транзакции на стороне сервера, которые вы » Буду ожидать от БД. Замечание о Spring - я не совсем уверен, что Spring.NET еще поддерживает «транзакции» для LDAP, но у них есть что-то подобное в Java-реализации Spring. Возможно, стоит взглянуть.

9
ответ дан 30 November 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: