{quote}{login=ZVI}{date=02.05.2011 06:18}{thema=}{post}{quote}{login=svalerievna}{date=02.05.2011 02:57}{thema=Re: Re: }{post}ZVI, подскажите, если я через VBA вбиваю формулы в ячейки и заставляю их пересчитываться, должны использоваться >1 ядра?
Когда я вручную запускаю пересчет, диспетчер показывает, что загружен ЦП полностью. Но через макрос ЦП не загружен и на четверть, хотя в ином случае гораздо быстрее мог считать бы.{/post}{/quote}
Если пересчет формул инициирован из VBA, кроме Range.Culculate и Range.CalculateRowMajorOrder, то многопоточные вычисления работают.
При оговорках из моего предыдущего сообщения.
Обычно более значительный выигрыш в скорости дает оптимизация кода, а не экстенсивный метод использования многопоточности.
Но для оптимизации нужен определенный опыт.
Если уж записывать формулы из VBA в ячейки, то быстрее групповые операции типа Range("АдресДиапазона").Formula = "=Формула". Если формулы разные, то лучше ими сначала зарядить VBA-массив, а затем одним действием записать формулы из массива в диапазон, и т.п.{/post}{/quote}
Спасибо!
Поискала по теме, оставлю здесь ссылку, может, кому пригодится тоже:
Когда я вручную запускаю пересчет, диспетчер показывает, что загружен ЦП полностью. Но через макрос ЦП не загружен и на четверть, хотя в ином случае гораздо быстрее мог считать бы.{/post}{/quote}
Если пересчет формул инициирован из VBA, кроме Range.Culculate и Range.CalculateRowMajorOrder, то многопоточные вычисления работают.
При оговорках из моего предыдущего сообщения.
Обычно более значительный выигрыш в скорости дает оптимизация кода, а не экстенсивный метод использования многопоточности.
Но для оптимизации нужен определенный опыт.
Если уж записывать формулы из VBA в ячейки, то быстрее групповые операции типа Range("АдресДиапазона").Formula = "=Формула". Если формулы разные, то лучше ими сначала зарядить VBA-массив, а затем одним действием записать формулы из массива в диапазон, и т.п.{/post}{/quote}
Спасибо!
Поискала по теме, оставлю здесь ссылку, может, кому пригодится тоже: