Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

 

  Вопрос: Разгоняем CHR : Почти в 2 раза! Добавлено: 08.05.05 22:08  

Автор вопроса:  Morpheus | Web-сайт: xury.zx6.ru

Ответить

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

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #106
Добавлено: 12.05.05 17:03

у меня есть некоторые сомнения, насколько я знаю, данные грузятся в кэш только при чтении их из ОЗУ. Даже при записи в ОЗУ они не грузятся, т.к. не нужны в кэше, а тем более грузить их когда не происходит обращений к данным - нерационально, они ведь могут вообще не понадобиться, зачем делать лишнюю работу? Имхо, это так.

 А по ссылкам, которые я кидал поленился зайти?

Быстродействие этих процессоров в значительной мере определяется их архитектурой, основанной на простой конвейерной схеме, содержащей три компоненты: шинный интерфейс (BIU - bus interface unit), очередь упереждающей выборки и исполнительный модуль (EU - execution unit). Когда шина памяти находится в нерабочем состоянии (например, прри выполнении команды из многих циклов, операнды которой находятся в регистрах), шинный интерфейс извлекает байты команд из памяти и помещает их в очередь упреждающей выборки, последовательно продвигаясь от текущего положения командного счетчика ЦП. Когда исполнительный модуль завершает исполнение очередной команды, он в первую очередь ищет следующую команду в очереди упреждающей выборки: если она там действительно имеется, то к ее расшифровке можно приступить сразу же, не обращаясь лишний раз к памяти.

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #107
Добавлено: 12.05.05 17:05

Соблазн может и есть, но занимает она два байта.

 Если ты про Boolean, то его размер не 2, а 4 байта.

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #108
Добавлено: 12.05.05 17:10
Если ты про Boolean, то его размер не 2, а 4 байта.


Прикольно Йоёё >=:-[] Во блин, рухнули мои надежды ни самую быструю в мире переменную :(

В сях так вообще четыре

Ну, вообще...я до сих пор думал, что в си вообще нет булеана :)

Ответить

Номер ответа: 109
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #109 Добавлено: 12.05.05 17:16

Если ты про Boolean, то его размер не 2, а 4 байта.

Да, я про него. Только не 4, а 2 байта. Т.е. 16 бит. Или ты про .NET?

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #110
Добавлено: 12.05.05 17:34
Нет, я про VB6, у которого длина типа Boolean равна 4-м байтам.

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #111
Добавлено: 12.05.05 17:40
Хотя может и 2. Надо будет дома в MSDN глянуть.

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #112
Добавлено: 12.05.05 17:56
Да, действительно 2 :)

Private Sub Form_Load()
 Dim a As Boolean
 a = True
 MsgBox a, , Len(a)
End Sub

Ответить

Номер ответа: 113
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #113 Добавлено: 12.05.05 17:58
Не трудись, у меня MSDN перед носом. Что VB6, что VB.NET - 2 байта.

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #114
Добавлено: 12.05.05 20:32
да это наверное для апи сделано, чтобы работали быстрее, помните типа 0 - если неудача (или ложь), ненулевой значение в случе успеха. если надо, то пусть прог-т типа сам проверит

Ответить

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



Вопросов: 46
Ответов: 848
 Профиль | | #115 Добавлено: 13.05.05 02:12
True в VB - это как правило минус единица. Но оператор If принимает любое ненулевое значение за истину. Хотя сишные функции возвращают плюс единицу как True... была здесь такая тема...

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #116
Добавлено: 13.05.05 04:51
а какие есь сишные функции в ВБ?

Ответить

Номер ответа: 117
Автор ответа:
 sne



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #117
Добавлено: 13.05.05 10:31
Операнд-Регистр имеет свои подтипы.

lol, регистр = типизированная переменная :) Нет!? А можно подумать :)))


То, что память была заметно медленней регистра, было заметно на старых процессорах. На современных это уже не столь актуально. Операции с локальными переменными(память на стеке) практически так же быстры, как и с регистрами.


Я бы так не сказал ((
Если их использовать в качестве счетчика, в отличие от Long переменной, VB для этого уже не использует регистр, а используется счетчик в памяти... в итоге после переделки примера Sharp'a я даже не смог дождаться окончания его выполнения :) Это говорит о многом...

Как я уже говорил, для VB этим типом оптимизации является

Почему же, в настройках компилятора оптимизация в сторону быстродействия/размера так же неплохо работают... Пусть оно и не ах как заметно, но код действительно меняется, и действительно в сторону оптимизации.

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


Это не факт!

..то весь остальной код тебе не подконтролен.


Вот именно по этой причине меня порадовал "register" в C++ :)

При компиляции с ключём "макс.скорость" и без оного разница - небо и земля.

Поддерживаю :)

доступных для манипуляций - 8 штук (eax,ecx,edx,ebx,esp,ebp,esi,edi).

Я бы на твоем месте из этого списка вычеркнул ebp, esp. Так как использовав их, ты теряешь ориентацию в стеке...

Разумеется можно их сохранить в некой обл. памяти, но если использовать компилятор masm32, и его синтаксис, адресация к "локальным" данным процедуры и параметрам переданным в процедуру через стек, производится по ebp...

Но зло, несомое компилятором, можно свести к минимуму.

Низя :) По сравнению с тем количеством кода что выполняется в теле цикла, использование удачных решений с нашей стороны - сводится практически к нулю...

а какие есь сишные функции в ВБ?

а такие могут быть :) ?

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #118
Добавлено: 13.05.05 11:37


Операнд-Регистр имеет свои подтипы.

lol, регистр = типизированная переменная :) Нет!? А можно подумать :)))

 Ага, я обновил подверсию Local Assembler и вчера до поздна писал введение в ассемблер. Ну так вот, я тоже так разгрупировал: по видам и типам. Вид - это регистр, память или число, а тип соответственно размер (8,16,32).

Ответить

Номер ответа: 119
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #119 Добавлено: 13.05.05 13:43
Забавная терминология. Я бы, на худой конец, назвал регистр, память или число типом, а 8,16,32 - разрядностью. Видам тут делать, ИМХО, нечего. Хотя, конечно, можно сказать что тип регистра - 16 разрядный, но тип регистра - 16, ИМХО, левак. Почему бы не взять термины из старых книжек?

Ответить

Номер ответа: 120
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #120 Добавлено: 13.05.05 14:18
ebp и esp наверное вычеркивать не надо, надо лишь учитывать, что один из них (любой) должен остаться "дежурным по стеку".

Ответить

Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

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



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