Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Сколько операций нужно для... Добавлено: 24.04.05 19:07  

Автор вопроса:  Страшный Сон

Ответить

  Ответы Всего ответов: 30  

Номер ответа: 16
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #16
Добавлено: 25.04.05 18:24

Тут какая-то фигня вышла - по проведенному мной исследованию вычисление функции sin требует порядка 160-170 тактов камня. Многовато это по моему...

 Как проверял можешь показать?

Ответить

Номер ответа: 17
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #17
Добавлено: 25.04.05 21:15
Насчёт матрицы: я где-то читал про такой способ ускорения. Однако это жрёт память и поэтому это небеспроигрышный способ. А если учесть проверки на выход за рамки массива и прочую мутатень, то прироста в скорости может и не получится. В общем, это для каких-нибудь определённых задач проканает.
По теме: тут всё такое умное и возвышенное, что я даже спрашивать боюсь. 8)
А что при дисасме vb'шной проги её обращения в библиотеки тоже дисасмятся? Я как-то пробовал, так там мало того, что поток постоянно прыгает, так ещё там куча каких-то вызовов левых функций и прочей мути. Хотя проект для исследования содержал тока Sub Main. А потом прочитал в одном руководстве по кряку "если эта прога написана на VB, то сушите вёсла - состаритесь пока найдёте место, которое нужно менять" и отказался от дальнейших исследований в этой области.
Там вообще РЕАЛЬНО найти определённую операцию? Тока по-честному. 8)

Ответить

Номер ответа: 18
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #18
Добавлено: 25.04.05 22:10

По теме: тут всё такое умное и возвышенное, что я даже спрашивать боюсь.

 Что конкретно тебе не понятно?


А что при дисасме vb'шной проги её обращения в библиотеки тоже дисасмятся?

 Глупый вопрос, конечно же нет. Но что тебе мешает один раз дизассемблировать MSVBVM60.DLL и сохранить её на винте для будущего использования?
 Листинг занимает всего 20 метров. У тебя что винт маленький?


А потом прочитал в одном руководстве по кряку "если эта прога написана на VB, то сушите вёсла - состаритесь пока найдёте место, которое нужно менять" и отказался от дальнейших исследований в этой области.

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


Там вообще РЕАЛЬНО найти определённую операцию?
Тока по-честному. 8)

 Крякеру может и трудно, а тебе какие проблемы?

 Dim A As Long: A = &H12345678

 Метка есть? Дизассемблируй и ищи 12345678 в коде.

Ответить

Номер ответа: 19
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #19
Добавлено: 25.04.05 22:54
>Что конкретно тебе не понятно?
Слишком много, пожалуй, вопросов.
>Метка есть? Дизассемблируй и ищи 12345678 в коде.
Обязательно испытаю!

Ответить

Номер ответа: 20
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #20
Добавлено: 26.04.05 12:44
Идея с матрицей для умножения очень глупая. Т.к. числа в памяти находятся линейно, для получения результата тебе придется умножать, складывать и получать доступ по адресу.

Ответить

Номер ответа: 21
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #21
Добавлено: 26.04.05 12:55
Не, ну если сравнить с обычным умножением (многократное сложение), то при больших числах выигрыш очевиден. Другое дело что таблицы тогда слишком раздуваются.

Ответить

Номер ответа: 22
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #22 Добавлено: 26.04.05 17:51
Идея с матрицей для умножения очень глупая.

Да, инструкция умножения и так очень быстрая, матрицы полезно использовать для более сложных вычислений. К примеру, в проге, которую я сейчас делаю, используется 256-цветная палитра. Чтобы реализовать alpha blend, я сделал байтовую таблицу 256x256, которая заранее вычисляется и запихивается в файл без преобразований. Когда прога запускается, она грузит таблицу из файла в массив и все.

Как проверял можешь показать?


Вырубил оптимизацию кода, установил флажки Advanced Optimizations, сделал кнопку, запрограммировал ее, запускал из екзешника:


Private Sub Command1_Click()
Dim I&, T!, T1!, T2!, Op!, Op2!, D&, F As Double
T = Timer
'I = 0
For I = 0 To 333333332: Next I
T1 = Timer - T
MsgBox "Âðåìÿ îäíîé îïåðàöèè: " & CStr(T1) & " ó. å."
T = Timer
For I = 0 To 99999999: Next I
T2 = (Timer - T) * 10
Op = T2 / T1
MsgBox "×èñëî îïåðàöèé öèêëà: " & CStr(Op)
D = 0
T = Timer
For I = 0 To 99999999: F = Sin(1): Next I
T2 = (Timer - T) * 10
Op2 = T2 / T1
MsgBox "×èñëî îïåðàöèé èññëåäóåìîé èíñòðóêöèè: " & CStr(Op2 - Op)
End Sub


Тут русский шрифт правда подглючивает почему-то...

Ответить

Номер ответа: 23
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #23
Добавлено: 26.04.05 18:01

For I = 0 To 99999999: F = Sin(1): Next I

 Это то, о чём я говорил. В каждом вхождении цикла у тебя выполняются все 3 описанные мной операции: Загрузка данных в сопроцессор из памяти, вычисление синуса и возврат результата в память. Отсюда и тормоза. Чтобы реально протестировать работу сопроцессора скорее всего нужно выполнить несколько операций над дробными числами перед присвоением результата переменной.

Ответить

Номер ответа: 24
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #24 Добавлено: 26.04.05 20:58
Дык вычисление синуса требует гораздо больше времени, чем загрузка из ОЗУ и запись... или нет?

Ответить

Номер ответа: 25
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #25
Добавлено: 26.04.05 21:26
Кстати, кому интерестно, пересмотрел записи, вдруг пригодится, кто знает:

Arcsin(X) = Atn(X / Sqr(-X * X + 1))
Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)


Заодно проверил доказал обе формулы, правда с косинусом косяк вышел, но потом понял где глюк :)

Ответить

Номер ответа: 26
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #26
Добавлено: 27.04.05 11:07
Попробуй так:

For I = 0 To 99999999: F = Sin(1)+Sin(2): Next I

 И сравни по скорости с предыдущим. И скажи мне наконец, ты в состоянии сам дизассемблировать программу и посмотреть какой код генерирует VB?
 Что тут гадать, посмотрел код и всё.

Ответить

Номер ответа: 27
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #27 Добавлено: 27.04.05 13:05
ты в состоянии сам дизассемблировать программу

Еще не приходилось.

Ответить

Номер ответа: 28
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #28
Добавлено: 27.04.05 15:37
Если будет время сегодня вечером посмотрю.

Ответить

Номер ответа: 29
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #29
Добавлено: 27.04.05 16:06
Дык прогу до ужаса просто дизассемблить и даже я смогу. а понять чего он там мне выдал блииин.... это уже сложнее

Ответить

Номер ответа: 30
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #30 Добавлено: 28.04.05 19:20
и даже я смогу

Дык и я смогу дизассемблить... Вроде даже раньше пытался... :]

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам