Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

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

 

  Вопрос: Microsoft vs Borland Добавлено: 07.06.04 15:54  

Автор вопроса:  ISpy | Web-сайт: intermult.boom.ru

Ответить

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

Номер ответа: 31
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #31
Добавлено: 08.06.04 23:16
2SNE а у меня всё ровно меньше+)

Ответить

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



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #32
Добавлено: 08.06.04 23:23
Fallout, признавайся что сделал, чем модифил :)

Ответить

Номер ответа: 33
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #33
Добавлено: 08.06.04 23:42
первый семп чистый С++ то бишь после компиляции я даже не прикасался +) 1.024 это и есть один КБ +)

А вот во втором ... +) просто отрезал ... заглушку досовскую .. типа "This program must be run on win32 " +))) это может делать например PeEditor +)

Ответить

Номер ответа: 34
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #34
Добавлено: 09.06.04 01:55
cresta,
 Всего лишь оптимизированный алгоритм цикла.

For a&=1 To 10
 Next a&


:004010AA C7C60A000000 mov esi, 0000000A
:004010B0 FFCE dec esi
:004010B2 75FC jne 004010B0


 Как видно из кода он не обращается к адресу переменной для поиска счётчика цикла.

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

#Register None
 For a&=1 To 10
 Next a&


:004010AA C745800A000000 mov [ebp-80], 0000000A
:004010B1 FF4D80 dec [ebp-80]
:004010B4 75FB jne 004010B1


 По идее API-функции часто используют регистр ESI(индекс источника).
 Попробуй повызывать в цикле какую нибудь API(а может даже и PB-шную ф-ю), работающую со строками.
 Неизвестно что получится. Наверное снижение скорости из за постоянного
PUSH ESI
 POP ESI

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

Ответить

Номер ответа: 35
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #35
Добавлено: 09.06.04 02:19
Сама прога.
======

#Compile Exe

Function PbMain
 #Register None
 For a&=1 To 10
 Next a&
 MsgBox";Done"
End Function

А вот слепок отчета компилятора.
======

PowerBASIC Compiler for Windows
PB/Win Version 7.0
Copyright (c) 1996-2002 PowerBasic Inc.
Carmel, California, USA
All Rights Reserved

Primary source: C:\PBWIN70\SAMPLES\ASM\Cicle.bas {9 total lines}
Target compilation: Cicle.exe
Compile time: 0.1 seconds, at 10800 lines/minute

224 bytes compiled code, 2165 bytes RTLibrary,
8 bytes string literals, and 1304 bytes dgroup.
Executable stack size: 1048576 bytes.
Disk image: 6144 bytes Memory image: 3477 bytes.
=======

224 байта - читый код
2165 - интерпретатор
8 байт - строки
1304 - dgroup

 А кто знает что это за "dgroup"? Я в недоумении.

Ответить

Номер ответа: 36
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #36
Добавлено: 09.06.04 03:24
Fallout,
 Лучше смени её на "Win'9x/NT". Коротко и ясно. И тебе прикольно.
 Так это как, только надпись отрезает или всю заглушку убивает нафиг?
 Во второй случае прога в ДОСе виснуть дожна по идее.

Ответить

Номер ответа: 37
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #37
Добавлено: 09.06.04 09:21
Да полностью ... как видишь сразу после MZ идёт PE ... толкьо виснуть не будет а писать будет КЭН НОТ ЕКЗИКУТ =) да и темболее мне всё рвоно до тех людей кто будет запускать мою программку... под ДОСом +)

Ответить

Номер ответа: 38
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #38 Добавлено: 09.06.04 12:35
То CyRax: Ну вот такой цикл: снова проверил при 10 000 000 элементов РВ 0,07 сек, ассемблер 0,10 сек

FUNCTION SumArr(BYVAL ArrPtr AS DWORD, BYVAL Cntr AS DWORD) AS LONG
                    ! mov ecx, Cntr
                    ! jecxz endcicle
                    ! mov edx, ArrPtr
                    ! xor eax, eax

                     start:
                    ! dec ecx
                    ! add eax, dword ptr [edx+ecx*4]
                    ! cmp ecx, 0
                    ! jne start

                     endcicle:
                    ! mov FUNCTION, eax

END FUNCTION
Пока писал, решил сделать вместо dword ptr [edx+ecx*4]
dword ptr [edx]
inc edx
inc edx
inc edx
inc edx - скорость сравнялась, а где ещё можно оптимизировать?
А с #Register None получается медленнее где-то на 20%

Ответить

Номер ответа: 39
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #39
Добавлено: 09.06.04 14:09
cresta,
 Почему бы тебе не слямзить цикл у самого PB?
 Если я правильно понял, то Cntr - Ubound(Array).

1 mov esi, Cntr
2 dec esi
3 add eax, [edx]
4 inc edx
5 jne 2

 Тем более что такой цикл - самый быстрый из АСМ-овых алгоритмов.

>А с #Register None получается медленнее где-то на 20%
 Вроде ESI здесь нигде не используется так что делай смело #Register Default (а может быть даже All).

Ответить

Номер ответа: 40
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #40 Добавлено: 09.06.04 15:26
Да я пытался найти, где в компилированном ехе находится РВ-цикл, чтоб сравнить как он делается компилятором с моим ассемблерным, но не нашёл :(

Ответить

Номер ответа: 41
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #41
Добавлено: 09.06.04 16:01
 Так вот же он :)

For a&=1 To 10
Next a&

:004010AA C7C60A000000 mov esi, 0000000A
:004010B0 FFCE dec esi
:004010B2 75FC jne 004010B0

Ответить

Номер ответа: 42
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #42
Добавлено: 09.06.04 16:06
 cresta,
Будешь участвовать в проекте создания интерактивного ассемблера для VB6?

Ответить

Номер ответа: 43
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #43 Добавлено: 09.06.04 16:08
А этот цикл работает с такой же скоростью, как и тот, что я написал топиком выше. И ещё: add eax, dword ptr [edx] и add eax, [edx] - они получаются эквивалентны, что ли?

Ответить

Номер ответа: 44
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #44 Добавлено: 09.06.04 16:15
Да я не потяну наверное такое. Мои познания в ассемблере - это то, что я вспомнил от ассемблера для восьмиразрядных машин, разбавленное несколькими просмотрами дампов в PE Explorer. Не знаю, помнишь или нет, были такие ZXSpectrum :) где-то в году 1990 примерно. Тогда писал на ассемблере, а сейчас - страшно, блин :((

Ответить

Номер ответа: 45
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #45
Добавлено: 10.06.04 09:10
Так есть же уже даже с открытыфм кодом... Адд0ОНы к ВБ которые позволяет делать асм вставки.. правдо ... только в ввиде коментов сооственно отлаживать такое невозможно.... 2@CyRax PTR а что ты предлагаешь то конкретно?

Ответить

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

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



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