![]() |
#14 |
Участник
|
Еще информация для размышлений:
Вот job для экспериментов X++: static void tutorial_Job_getMemAlloc(Args _args) { HeapCheck heapHeck = new HeapCheck(); int allocFirst; Set set1; Set set2; Set set3; int i; timeOfDay time1; TmpInventTable tmpIT; Counter recIdCount; ; recIdCount = 40000; allocFirst = heapHeck.bytesAllocated(); info(strfmt("%1 - До заполнения", allocFirst)); time1 = timeNow(); set1 = new Set(Types::Integer); for (i = 1; i <= recIdCount; i++) set1.add(i); allocFirst = heapHeck.bytesAllocated(); info(strfmt("%1 - %2сек - заполнили Set(Types::Integer)", allocFirst, timeNow() - time1)); time1 = timeNow(); set1 = new Set(Types::String); for (i = 1; i <= recIdCount; i++) set1.add(strFmt("Item%1", i)); allocFirst = heapHeck.bytesAllocated(); info(strfmt("%1 - %2сек - заполнили Set(Types::String)", allocFirst, timeNow() - time1)); time1 = timeNow(); for (i = 1; i <= recIdCount; i++) { tmpIT.ItemId = strFmt("Item%1", i); tmpIT.insert(); } allocFirst = heapHeck.bytesAllocated(); info(strfmt("%1 - %2сек - заполнили временную таблицу из одного поля - ItemId", allocFirst, timeNow() - time1)); } 28 939 792 - До заполнения 30 413 632 - 1сек - заполнили Set(Types::Integer) 30 401 280 - 1сек - заполнили Set(Types::String) 32 763 840 - 13сек - заполнили временную таблицу из одного поля - ItemId Обращу внимание на время, требуемое для заполнения временной таблицы таким большим кол-вом записей. SET заполняется почти мгновенно. (правда у других проверяющих время заполнения меньше для таблицы - видимо это связано с тем, что винт у меня на ноутбуке не очень быстрый) Оговорка: Результаты по выделению памяти приблизительные, так как Цитата:
Сообщение от AndyD
Память выделяется кусками. Т.е. если объект в памяти занимает меньше места, чем свободно - то выделение не происходит, а размещается в свободном куске
![]() Анализ результатов (краткий): первые два заполнения - 2 Мб выделилось приблизительно, (на двоих) на табличку - еще столько же где-то. Учитывая это и время заполнения, использование временной таблицы ставится под вопрос. + большой конечно, что можно ее потом использовать в запросах. Правда и в этом нужно быть осторожным, так как нужно учитывать, где формировалась эта таблица (первая запись). У кого какие соображения? |
|
|
За это сообщение автора поблагодарили: EVGL (3). |
Теги |
download, как правильно, полезное, производительность, axapta |
|
|