|
|
||||||
Транспонировать один массив в другой03.01.2013, 22:08. Показов 15080. Ответов 27
Метки нет (Все метки)
Есть большой массив данных (от 5000 до 800000 строк на 100-200 столбцов)
Сделал транспонирование через For
Может есть стандартное средство языка для такого дела?
0
|
||||||
| 03.01.2013, 22:08 | |
|
Ответы с готовыми решениями:
27
У меня есть массив t[n,m]. Мне нужно последний столбец записать в другой массив и транспонировать его Перенести в один другой массив четные числа.Затем перенести в еще один другой массив нечетные числа. |
|
|
|
| 05.01.2013, 12:17 [ТС] | |
|
вообщем я не с числами работаю... у мнея всё variant... и просто немеряно проверок всяких делается))) посмотрел старый код - намудрил я там с циклами несколько))) Но всё одно долго он выполняется... непростительно долго.... сейчас буду подвешивать эти свои проверки.. А там текст + даты + числа + вычисляемые поля. Вообщем больная голова, а не задача)))
Добавлено через 1 час 16 минут примерно соотношение 40 % текст 40 % числа 20 % даты Добавлено через 3 минуты с датами идут вычисления с числами тоже текст проверяется на сопоставимость по парам вот и вылезло время дохренищща))) да... кстати ноут - первое поколение неламповых))) на самом деле среднестатистистический из ушедших год назад из продажи
0
|
|
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
|
| 05.01.2013, 12:49 | |
|
До всё равно необоснованно долго.
Может не все операции делаются в памяти, а грузятся на лист? Так же печать в Дебаггер промежуточных результатов очень тормозит процесс ( я часто так делаю при отладке, но при работе - обязательно убрать из больших циклов)
0
|
|
|
|
|
| 05.01.2013, 14:04 [ТС] | |
|
дебуги все убраны изначально... хотя скорость проверить не получится))) последняя версия тремя - пятью минутами обходится
Добавлено через 1 минуту просто перелопатил код и убрал всю динамическую составляющую и некоторые форы... вот еще вопрос .... как может влиять на скорость динамическая часть массива... когда на каждый новый элемент массива я его переписываю в режиме пресерва...
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 05.01.2013, 15:59 | ||||||
|
Если массив большой, то preserve будет тормозить, т.к. массив не дополняется, а полностью переписывается.
Даже глазом становится заметно - как-то делал синтетический опыт. Поэтому Алексей в начале и советовал сразу задать массив по максимуму, затем можно выгрузить только реально нужное. Будет правда занята лишняя память, зато избавитесь от потерь на лишних действиях. Добавлено через 12 минут Вот например такой нехитрый код - после полумиллиона глазом видны тормоза. Если нагрузить объёмом - то думаю будет заметно раньше.
0
|
||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 05.01.2013, 17:57 | |
|
"когда на каждый новый элемент массива я его переписываю в режиме пресерва" - разве это не в цикле? Как тогда появляются новые элементы?
0
|
|
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||||||||||||
| 06.01.2013, 02:16 | ||||||||||||||||
|
Написал функцию для транспонирования массива типа Variant путем переписывания кусков памяти.
Функция работает В 3 РАЗА БЫСТРЕЕ, чем метод Application.Transpose, но имеет существенное ограничение. Если в массиве содержатся числа (включая Decimal и Currency), данные типа Boolean, Date - все хорошо. Но если элементы массива содержат строки, то транспонированный массив содержит достоверные значения в этих элементах только пока существует исходный массив! Если стереть исходный массив, в транспонированном массиве могут оказаться случайные данные, и обращение к ним, скорее всего, приведет к краху программы. Это связяно с тем, что в переменной типа Variant\String содержится ссылка на строку, а сама строка - в другой области памяти. При стирании переменной типа Variant\String память, занимаемая строкой, освобождается для других процессов, и может быть изменена в любой момент. А элемент транспонированного таким способом массива продолжает хранить ссылку на эту область памяти.
тестовые процедуры
2
|
||||||||||||||||
|
|
|
| 06.01.2013, 17:40 [ТС] | |
|
пресерв в цикле был! это точно1 он и тормозил все дела. Как только от него избавился сразу время показало - что с увеличением строк в массиве затраты времни не увеличиваются
0
|
|
| 06.01.2013, 17:40 | |
|
Преобразовать один массив в другой
Как поместить один массив в другой?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|