Как назначить Пользовательский класс источником данных в кристаллическом отчете

FWIW:

$ python -m timeit -s "import re" "re.match('hello', 'hello world')"
100000 loops, best of 3: 3.82 usec per loop

$ python -m timeit -s "import re; h=re.compile('hello')" "h.match('hello world')"
1000000 loops, best of 3: 1.26 usec per loop

так, если Вы собираетесь быть использованием тот же regex много, это может стоить того, чтобы сделать re.compile (специально для более сложного regexes).

стандартные аргументы против преждевременной оптимизации применяются, но я не думаю, что Вы действительно теряете много ясности/прямоты при помощи re.compile, если Вы подозреваете, что Ваш regexps может стать узким местом производительности.

Обновление:

В соответствии с Python 3.6 (я подозреваю, вышеупомянутые синхронизации были сделаны с помощью Python 2.x), и аппаратные средства 2018 (MacBook Pro), я теперь получаю следующие синхронизации:

% python -m timeit -s "import re" "re.match('hello', 'hello world')"
1000000 loops, best of 3: 0.661 usec per loop

% python -m timeit -s "import re; h=re.compile('hello')" "h.match('hello world')"
1000000 loops, best of 3: 0.285 usec per loop

% python -m timeit -s "import re" "h=re.compile('hello'); h.match('hello world')"
1000000 loops, best of 3: 0.65 usec per loop

% python --version
Python 3.6.5 :: Anaconda, Inc.

я также добавил, случай (заметьте различия в кавычке между последними двумя выполнениями), который показывает, что re.match(x, ...) буквально [примерно] эквивалентно re.compile(x).match(...), т.е. никакого закулисного кэширования скомпилированного представления, кажется, не происходит.

9
задан 7 August 2009 в 13:32
поделиться

1 ответ

Взгляните на эту ссылку:

https://msdn.microsoft.com/en-us/library/ms227595.aspx

Это покажет вам, как это может быть сделанный. Вы можете посмотреть мой ответ на этот вопрос в качестве примера. Как использовать Crystal Reports без тесно связанного соединения с БД?

Краткое объяснение этого состоит в том, что вы должны иметь возможность добавить свой настраиваемый объект в ArrayList, а затем использовать ArrayList в качестве источника данных. Надеюсь, это поможет.

15
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

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