Я всегда боюсь объявлять вещи как просто Варианты в предположении, что будет выделен ненужный большой объем памяти.«Dim myarray() as String« VS »Dim myarray() как вариант«
В последнее время работает для повышения производительности таблицы я однако получил противоположное впечатление (см редактирования ниже): Dim myarray() as Variant
улучшается производительность по сравнению с Dim myarray() as String
Что было бы ключевые различия и последствия этих двух деклараций?
Не удалось найти четкие указания здесь: https://msdn.microsoft.com/en-us/library/aa711948.aspx
EDIT: Controlled Performance Test
Я провел испытание под контролем производительности (взять версию dim myarray() as Variant
, сделать копию и изменить две переменные Dim myarray() as String
)
Как вы можете видеть ниже, я ошибся, разница в производительности НЕ значительна.
Dim myarray() as Variant VERSION
Start 4:05:47 PM
FXLoaded 4:05:47 PM 00:00 TDLoaded 4:06:38 PM 00:51 LisofPCTD 4:06:57 PM 00:19 YDLoaded 4:07:47 PM 00:50 LisofPCYD 4:08:14 PM 00:27 PrintCoBTD 4:08:46 PM 00:32 PrintCoBYD 4:09:18 PM 00:32 Total 03:31 03:31
Dim myarray() as String VERSION
Start 4:25:53 PM
FXLoaded 4:25:53 PM 00:00 TDLoaded 4:26:53 PM 01:00 LisofPCTD 4:27:10 PM 00:17 YDLoaded 4:28:07 PM 00:57 LisofPCYD 4:28:32 PM 00:25 PrintCoBTD 4:29:03 PM 00:31 PrintCoBYD 4:29:34 PM 00:31 Total 03:41 03:41
Единственное, что вы изменили, это выключение 'Variant' для' String'? Вы время кода, чтобы проверить свою гипотезу о том, что скорость была улучшена? – Chrismas007
Ссылка, которую вы указали, - это VB.Net, которая не имеет прямого отношения. Я предпочитаю использовать варианты для массивов с учетом их гибкости, особенно используя синтаксис 'Dim myarray As Variant' (вариант, который может содержать массив, а не массив вариантов. Я использовал такие вещи с количеством 100 000 записей (или больше) без проблем, но YMMV. –
@JohnColeman У меня пока нет источника, но я думаю, что вы говорите прямо с ответами. Массивы - это единственный тип, который я видел, предлагаемый должен использовать 'Variant 'type. Когда вы используете тип' String', вы должны думать обо всех дополнительных символах, необходимых для определения строки в виде массива. – Chrismas007