аналог указателей на массив

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Lord_Satan
Обычный пользователь
Обычный пользователь
 
Сообщения: 76
Зарегистрирован: 08.12.2001 (Сб) 10:26
Откуда: П.-К.

аналог указателей на массив

Сообщение Lord_Satan » 24.02.2006 (Пт) 8:07

прочёл статьи про сабж, но так и не понял
есть что-то подобное математике указателей на массив (хотябы косвенными методами)

например с помощью указателей ускорить чтение\запись из\в массив

dim a(65535) as integer
dim i,p as integer

for i=0 to 65535
p=a(i)
'многократное использование p
a(i)=p
next

в MSDN тоже не нашол подсказки
Space Ace says: "Whant to be a DREAD courier?"

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 24.02.2006 (Пт) 8:25

Совершенно непонятно в чем проблема и в чем вопрос? Про указатели в VB.NET можешь почитать еще и здесь http://www.vbstreets.ru/VBdotNET/Articles/66311.aspx
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: аналог указателей на массив

Сообщение tyomitch » 24.02.2006 (Пт) 10:00

Lord_Satan писал(а):например с помощью указателей ускорить чтение\запись из\в массив

А как указатели позволят это ускорить? :-?
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 24.02.2006 (Пт) 11:16

Ну разве что Array Bound Check в этом случае будет опущен :)
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.02.2006 (Пт) 12:36

Угу.
Только использование средств маршалинга, хм, несколько, хм, замедлит эту процедуру по сравнению с прямым присваиванием.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 24.02.2006 (Пт) 12:48

Ну, смотря как маршалинг, хм, организовать.
Если Put\GetMem, то да. Но можно, скажем, в процедуру передавать параметр аля Byref A as Long, а потом в этой процедуре перезаписать значение в стэке. В итоге обращаясь к переменной A мы фактически будем обращаться к нужному элементу массива. Вот только что на это скажет Framework?
Или еще проще, что бы совсем не заморачиваться, просто сделать отделбную процедуру для "обработки" элемента и передавать в нее этот элемент по ByRef.(фактически - то же самое, только вся работа с указателями скрыта).
А вообще - подобного рода оптимизации для VB.NET - вещь воистину бесмысленная, как мне кажеться :?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Lord_Satan
Обычный пользователь
Обычный пользователь
 
Сообщения: 76
Зарегистрирован: 08.12.2001 (Сб) 10:26
Откуда: П.-К.

Сообщение Lord_Satan » 25.02.2006 (Сб) 1:08

имелось ввиду, присвоить указателю адресс первого элемента массива, а затем работать с этим указателем сдвигая его адрес в каждом витке цикла на 1 элемент массива

у меня в цикле используется 3-4 массива, давольно не быстрая операция

2ANDLL

если делать как ты говориш, то при каждом обращении к массиву придётся вызывать функцию или процедуру, не проверял, но думаю это медленнее чем простое обращение к массиву

---------------------------
в статьях постоянно говорится о том что языки можно микшировать, значит ли это, что я могу написать что то вроде этого

dim a(100) as integer
dim x,y,z as integer

'здесь пишем код на си

'а здесь опять на басике

???
Space Ace says: "Whant to be a DREAD courier?"

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2006 (Сб) 6:55

Нет, нельзя, и нет, прямое обращение к массиву быстрее.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 93

    TopList