13.08.2009, 01:23 | #1 |
Участник
|
накладность changeCompany
Мне нужно в классе обрабатывать порядка 1000 записей в 15 компаниях каждую. Можно написать цикл по компаниям , в каждой компании обработать по 1000 записей - итого 15 переключений компаний. А можно каждую запись обрабатывать в 15 компаниях - 15000 переключений компаний. На сколько накладней второй вариант? Алгоритм проще, если каждую запись обрабатывать в 15 компаниях, но тк производимтельность важна, думаю вот, что надо все записи сначала в одной компании, потом во второй и тд. Посоветуйте, плз как лучше сделать.
|
|
13.08.2009, 08:23 | #2 |
MCTS
|
У меня при чтении файла, где строк около 30000, переключений происходит около 15000. Жутких тормозов замечено не было. Но это при чтении из файла, я там никак не могу отсортировать по компаниям (можно исп. временные таблицы, но не вижу смысла...), а вы же читаете из базы, значит логичней сделать цикл по компаниям.
|
|
13.08.2009, 10:54 | #3 |
Участник
|
то есть не тормозит?
|
|
13.08.2009, 11:41 | #4 |
MCTS
|
нет, катастрофы не наблюдается
|
|
13.08.2009, 12:00 | #5 |
Участник
|
Делал как-то импорт номенклатуры из Excel, несско тыщ записей импортировались менее чем за минуту, но когда была реализована "репликация" номенклатуры между несколькими компаниями (сделать общей InventTable, разнеся по компаниям лишь InventTableModule, было нельзя), и каждая импортируемая номенклатура стала пробрасываться еще в пяток компаний, скорость импорта упала на порядок.
При каждом использовании changecompany происходит два вызова \Classes\Application\setDefaultCompany - сначала на переключение в другую компанию, а затем на переключение в исходную. Кода там выполняется немало (это можно увидеть, включив мониторинг вызываемых методов), так что стоимость переключения между компаниями, если их происходят тысячи, становится весьма существенной. В качестве полумеры можно использовать явный вызов appl.setDefaultCompany() вместо changecompany (но надо потом не забыть вернуться в исходную компанию), а так, если хотите достичь нормальной скорости - переделывайте алгоритм, чтобы свести переключения между компаниями к минимуму. |
|