Форум программистов, компьютерный форум, киберфорум
.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 05.11.2008
Сообщений: 27

Максимальная скорость фрагмента

06.12.2011, 19:08. Показов 1508. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть некий фрагмент программы типа:
For i=0 to end1
For j=0 to end2
If massivA(i)=massivB(j) then massivC(k)=j
Next j
Next i

где
massivA, massivB - Byte массивы
massivC - integer массив
end1 и end2 порядка 10 000 000.
Попробовал в VB.Net - медленно. Надо в 100 раз быстрее.

Как сделать подобный код максимально быстрым? Есть ли API-функции или другие механизмы?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2011, 19:08
Ответы с готовыми решениями:

Нужна максимальная скорость программы
Нужна максимальная скорость программы (сложение, сравнение целочисленных переменных, в том числе лежащих в Byte массивах и пр. похожие...

Скорость распространения волны и максимальная скорость колебаний частиц воздуха
Добрый вечер уважаемые участники форума. Применять уравнение звуковой волны для решения этой задачи?Или формулу можно выудить другими...

Максимальная длина монотонного фрагмента
Дана последовательность натуральных чисел, завершающаяся число 0. Определите наибольшую длину монотонного фрагмента последовательности (то...

4
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
07.12.2011, 13:20
Ускорения в 100 раз предложить не могу. Разве что приобрести самый быстрый компьютер

Если серьезно, то в данном примере для достижения максимальной скорости работы с массивом следует попробовать следующее:
1) Оптимизацию надо начать с алгоритма. Раз end1 и end2 имеют значения порядка 10 000 000, то общее число повторений внутренностей цикла = 10^14. Возможно в некоторых случаях не нужно выполнять внутренний цикл до конца. Я не знаю что у тебя выступает в роли исходных данных и какой должен быть результат. Тебе это лучше знать. Поэтому подумай - нет ли у теля лишних перезаписей в элемент massivC(k) - как меняется индекс k у тебя не показано. Далее может можно отсортировать данные и это позволит ускорить обработку? Или может известно статистическое распределение данных, что тоже может дать идеи для оптимизации? В общем первый шаг это оптимальный алгоритм - он не зависит от языка реализации.

2) Наиболее эффективно работать с областями памяти позволяет работать C#. Там можно использовая ключевое слово fixed и указатели. Метод использующий их надо будет пометить как unsafe и указать соотв. параметр компилятору.

3) Часть времени исполнения управляемой программы уходит на ее компиляцию. Можно заранее создать откомпилированный образ программы используя утилиту ngen. Но с такими объемами данных ее влияние не будет заметно.

Если шаги 2) и 3) не помогают, то можно переписать код работы с массивами на неуправляемом C++ или ассемблере. Откомпилировать в dll и вызывать из VB.NET или C#. Когда ты спрашивал про "максимальную скорость программы", тебе советовали как раз C++ или ассемблер.
0
pl
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
07.12.2011, 14:32
Почитай статью "У границ безопасного кода"
http://kubcat.subscribe.ru/archive/comp.soft.prog.dotnetgrains/200508/25174527.html#3
0
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 10
07.12.2011, 20:18
у класса Array есть статические метод Copy... он и будет в 100 быстрее чем твой код. Быстрее только на асме...
0
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 10
07.12.2011, 20:24
сорри немного не дочитал до конца. но всеравно, быстрее ты не сделаешь и делай на дотнете. Как вариант написать все на управляемом си++ с использованием указателей. Так не будет контроля размерности массива, что само по себе быстрее. Кстати возможность создания "опасного" кода и прямой работы с указателями есть и в C#. Ну а Васик как всегда..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2011, 20:24
Помогаю со студенческими работами здесь

Максимальная длина монотонного фрагмента (оптимизация решения)
Здравствуйте, уважаемые форумчане. Помогите, пожалуйста, оптимизировать решение. Один тест не проходит по времени. Вот программа: ...

Максимальная скорость Wi-fi
Здравствуйте. Хотел бы узнать максиальную скорость wi-fi. Скорость интернета 100 Мбит/с. От вай-фая метра 2-3, тестил скорость выше 12...

Максимальная угловая скорость
Помогите пожалуйста в решении данной задачи. Я уже второй день не могу сделать ее((( Я уже не знаю к кому обратиться( С какой...

Максимальная скорость у 1121A.
Максимальная скорость генератора DC с внутреннем резистором и с питанием 3.6в у кристалла 1121А по даташиту около ~ 4-5мгц. Запускаю...

Максимальная угловая скорость
Стержень длиной 0,6 м и массой 0,1 кг может вращаться без трения вокруг горизонтальной оси, проходящей через его конец. К нижнему концу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru