159 / 104 / 124
Регистрация: 01.04.2014
Сообщений: 466
Записей в блоге: 7

Какой бейсик быстрее

04.06.2014, 15:44. Показов 3834. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня на компьютере есть 4 бейсика:
QBasic 1.1, 4.5, 7.1 и Turbo Basic 1.0
Всем им была дана одна и та же программа
с целью выяснить кто быстрее считает.
Задача была такая суммировать 100 миллионов
слагаемых гармонического ряда. Если принять
скорость счёта QB1.1 за 100%, то результат таков:
QB1.1 = 100%
TB1.0 = 340% (Turbo Basic)
QB4.5 = 460%
QB7.1 = 780%
Удачи вам!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.06.2014, 15:44
Ответы с готовыми решениями:

Какой бейсик редактирует файлы формата BLD
Какой бейсик редактирует файлы формата BLD ???

Диалект языка Бейсик - Spectrum-Бейсик
Приветствую всех. Недавно в сети нашла книгу: "Как написать игру для ZX Spectrum"/ А. Купальцевич, И. Капульцевич, А. Евдокимов. - 2-е...

Какой Бейсик лучше?
Собираюсь начать учить Visual Basic. Правда что самый лучший редактор для него это Visual Studio Community? Если да, то 2015 года для...

39
1045 / 315 / 74
Регистрация: 13.07.2013
Сообщений: 1,270
05.06.2014, 23:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Отключи Hyper Threading, или просто загрузись в чистом досе, тогда целое ядро будет выделено. При эмуляции там вся скорость загибается и вероятно, что на эмуляцию хавается не целое ядро(смотря где).
Вы, видимо, неправильно поняли. Под программу у меня выделяется как раз-таки одно (целое) логическое ядро, а так как таких еще 7, то от общей мощности проца потребляется 100%/8=12.5%. Тестил я это дело на FreeBasic, и все оказалось действительно так: при одном потоке - 12.5%, при 8 - ~100%.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
05.06.2014, 23:21
Вы, видимо, неправильно поняли.
А ну под виндой да. Я ж про DOS-овые компили имел в виду при эмуляции и без.
Ну ok, сколько у тебя физических ядер? Если 8(AMD?) тогда да, всё так и будет,
если же 4, то в биосе вырубаешь HT и логич. деление исчезнет, тогда будет
побыстрее.
2
 Аватар для vodav
572 / 141 / 37
Регистрация: 12.03.2012
Сообщений: 403
06.06.2014, 00:29
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Но никогда
1-ая версия бейсика не будет работать быстрее 7-ой версии!!
Может я не врубился, поясните еще раз.
1. Вы Basic запускаете в среде редактора?
2. Если нет, то как вы компилируете 1-й Basic.
3. Считаю, что говорить о скорости исполнения можно только для автономного exe-шника.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
06.06.2014, 03:55
3. Считаю, что говорить о скорости исполнения можно только для автономного exe-шника.
Именно, интерпретация в среднем в 1.5-2 раза медленнее.

Если нет, то как вы компилируете 1-й Basic.
Если он и компилирует, то версией >= 4.5. Хотя его простая прога откомпилится и ранними.

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

Я с вами не согласен. VB6 будет жить столько, пока
на нем будет работать хотя бы один человек.
VB6 то жить будет, вы на чём кодить-то собираетесь? QBasic уже подох...
Змейки и тетрисы увы не кормят Vodav, конечно, поспорит, ну а глобально, имхо
всё именно так.

И ещё.
Есть задачи в решении которых не поможет никакой, даже
в миллион раз более мощный компилятор. Если программист
сумеет написать программу, то он ее решит и без суперкомпилятора.
Иными словами, задача решается человеком, а не компилятором!!
Скомкано, но в принципе верно. Проблема в том, что людей можно купить(много),
навязать им задачу, они её решат. А один кодер не сможет решить, не потому что
он дебил или что-то такое, а просто из-за того, что общая комплексная сложность
проги превышает возможности его мозга по анализу, прогнозированию и выбору
грамотного направления разработки на всех этапах.
Избранные Лю Кенги конечно есть, но мало их, совсем мало...
1
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
11.06.2014, 19:04
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Как видно, что PureBasic быстрее VB6 в 3.7 раза!
Это дополнительный аргумент к вопросу о том, жив ли ещё VB6 или уже нет
Нет. Каковы условия проведения теста? Можно ли оба EXE файла? У меня другой результат в VB6. Да в принципе он здесь не будет различаться особо на разных языках.
Миниатюры
Какой бейсик быстрее  
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
12.06.2014, 10:46
Не поленился - сделал тест с использованием для вычисления нескольких потоков.Код Visual Basic
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Option Explicit
 
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Function WaitForMultipleObjects Lib "kernel32" (ByVal nCount As Long, lpHandles As Long, ByVal bWaitAll As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function ResumeThread Lib "kernel32" (ByVal hThread As Long) As Long
 
Private Const INFINITE = -1&
Private Const CREATE_SUSPENDED = &H4
 
Private Count As Long
 
Public Function Calc(ThreadCount As Long, TimeMS As Long) As Double
    Dim i         As Long
    Dim threads() As Long
    Dim values()  As Double
    Dim Begin     As Long
    Dim ptr       As Long
    Count = 100000000 \ ThreadCount
    
    If ThreadCount > 1 Then
        ReDim threads(ThreadCount - 2)
        ReDim values(ThreadCount - 2)
        
        For i = 0 To ThreadCount - 2
            values(i) = i * Count
            threads(i) = CreateThread(ByVal 0&, 0, AddressOf Thread, values(i), CREATE_SUSPENDED, 0)
        Next
        
        ' Т.к. первый вызов идет через DLLFunctionCall
        ResumeThread 0
        
        For i = 0 To ThreadCount - 2
            ResumeThread threads(i)
        Next
    
        Begin = GetTickCount
        
        Calc = (ThreadCount - 1) * Count
        Call Thread(Calc)
        
        WaitForMultipleObjects ThreadCount - 1, threads(0), True, INFINITE
    Else
        Begin = GetTickCount
        Calc = (ThreadCount - 1) * Count
        Call Thread(Calc)
    End If
    
    For i = 0 To ThreadCount - 2
        Calc = Calc + values(i)
    Next
    
    TimeMS = GetTickCount - Begin
End Function
 
Public Sub Thread(Value As Double)
    Dim i       As Long
    Dim cStart  As Long
    Dim cEnd    As Long
    
    cStart = Value + 1: cEnd = cStart + Count: Value = 0
    
    For i = cStart To cEnd
        Value = Value + 1 / i
    Next
End Sub
Теперь, гуру QBasic, хотелось бы сравнить скорости разных бейсиков в таких условиях, т.к. на однопоточных программах скорости одинаковые. В принципе я знаю что и тут будет скорость практически одинаковая.
Миниатюры
Какой бейсик быстрее  
Вложения
Тип файла: rar MultithreadTest.rar (6.0 Кб, 10 просмотров)
1
Эксперт по электронике
7153 / 3332 / 342
Регистрация: 28.10.2011
Сообщений: 13,148
Записей в блоге: 7
12.06.2014, 12:44
Тоже самое на PureBasic.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Structure ThreadCalc
  Result.d
  Count.l
EndStructure
 
Structure ThreadInfo Extends ThreadCalc
  ID.i
EndStructure
 
DisableDebugger
 
Procedure Thread(*Info.ThreadCalc)
  
  c = *Info\Count
  
  For i=1 To c
    s.d + 1 / i
  Next i
 
  *Info\Result =  s
  
EndProcedure
 
Procedure Calc(CountThreads)
  Protected Dim ThreadInfo.ThreadInfo(CountThreads)
  
  For i=1 To CountThreads
    ThreadInfo(i)\Count = 100000000 / CountThreads
    ThreadInfo(i)\ID = CreateThread(@Thread(), @ThreadInfo(i))
  Next
  
  Time=ElapsedMilliseconds()
  
  For i=1 To CountThreads
    WaitThread(ThreadInfo(i)\ID)
  Next
  
  Time=ElapsedMilliseconds()-Time
  MessageRequester("", "Число потоков: "+Str(CountThreads)+#LF$+"Время: "+StrF(Time/1000, 2)+" секунд")
  
EndProcedure
 
OpenWindow(0, 0, 0, 170, 70, "", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
TextGadget(0, 8, 14, 90, 16, "Число потоков:")
SpinGadget(1, 98, 10, 50, 20, 1, 32, #PB_Spin_ReadOnly|#PB_Spin_Numeric)
SetGadgetState(1, 2)
ButtonGadget(2, 50, 40, 70, 24, "Пуск")
 
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Gadget And EventGadget()=2
    Calc(GetGadgetState(1))
  EndIf
Until Event = #PB_Event_CloseWindow
Вложения
Тип файла: zip BasicTest.zip (15.6 Кб, 8 просмотров)
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
12.06.2014, 13:16
locm, во-первых, тест не такой и некорректный. У меня потоки стартуют все одновременно, у тебя уже потоки уже работают, только потом начинает замеряться время. Грубо говоря потоки уже посчитали "половину", а ты еще даже не запустил замер времени.
во-вторых, у тебя неправильно считается значение.
0
Эксперт по электронике
7153 / 3332 / 342
Регистрация: 28.10.2011
Сообщений: 13,148
Записей в блоге: 7
12.06.2014, 13:30
Цитата Сообщение от The trick Посмотреть сообщение
У меня потоки стартуют все одновременно, у тебя уже потоки уже работают, только потом начинает замеряться время.
Время запуска 8 потоков меньше 2 миллисекунд. Погрешность незначительная и на результат повлиять не может.

Цитата Сообщение от The trick Посмотреть сообщение
во-вторых, у тебя неправильно считается значение.
Почему?
В коде исходного варианта
QBasic/QuickBASIC
1
s = s + 1 / i
У меня
PureBasic
1
s.d + 1 / i
Что не так?
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
12.06.2014, 13:44
Цитата Сообщение от locm Посмотреть сообщение
Время запуска 8 потоков меньше 2 миллисекунд. Погрешность незначительная и на результат повлиять не может.
Нет. У тебя поток уже считает, а начальное время старта еще не замерялось. Если в моем коде также сделать то у меня тоже по 30мс показывает, хотя реально программа работает даже на глаз дольше.
Цитата Сообщение от locm Посмотреть сообщение
Почему?
Потому что ответ должен быть приблизительно равен 18.997, у тебя каждый поток считает до ~17 - смотри код, не зря же я передавал начальное значение счетчика.
На VB6 получился более компактный и быстрый код, листинги прилагаю ниже, также комментарии написал для PB.
Миниатюры
Какой бейсик быстрее  
0
Эксперт по электронике
7153 / 3332 / 342
Регистрация: 28.10.2011
Сообщений: 13,148
Записей в блоге: 7
12.06.2014, 14:30
Цитата Сообщение от The trick Посмотреть сообщение
Нет. У тебя поток уже считает, а начальное время старта еще не замерялось.
Время выполнения этого участка кода при CountThreads = 8 меньше 2 миллисекунды.
PureBasic
1
2
3
4
  For i=1 To CountThreads
    ThreadInfo(i)\Count = 100000000 / CountThreads
    ThreadInfo(i)\ID = CreateThread(@Thread(), @ThreadInfo(i))
  Next
Это не много и не может существенно повлиять на результат.

Цитата Сообщение от The trick Посмотреть сообщение
Потому что ответ должен быть приблизительно равен 18.997, у тебя каждый поток считает до ~17 - смотри код, не зря же я передавал начальное значение счетчика.
Как бы там ни было, это не влияет на время вычисления.
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
12.06.2014, 14:38
Цитата Сообщение от locm Посмотреть сообщение
Время выполнения этого участка кода при CountThreads = 8 меньше 2 миллисекунды.
При чем здесь время выполнения этого участка кода? У тебя уже другой поток стартанул и начал считать, т.к. твой CreateThread вызывает внутри кучу функций в том числе WaitForSingleObject. У тебя уже вычисления идут в другом потоке, пока этот код выполняется. Убери в моем коде флаг CREATE_SUSPENSED и протестируй мой код, тоже самое что и твой код сейчас.
Цитата Сообщение от locm Посмотреть сообщение
Это не много и не может повлиять на результат.
Как раз влияет.
Цитата Сообщение от locm Посмотреть сообщение
Как бы там ни было, это не влияет на время вычисления.
Это понятно, но зачем такой тест, который делает неправильный расчет?
Ассемблерный листинг показывает, что VB6 скомпилировал более оптимальный код.
1
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
12.06.2014, 15:31
locm, вот аналог твоего кода на VB6.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Option Explicit
 
Private Type ThreadCalc
    Result  As Double
    Count   As Long
End Type
 
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Any) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Any) As Long
Private Declare Function WaitForMultipleObjects Lib "kernel32" (ByVal nCount As Long, lpHandles As Long, ByVal bWaitAll As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long
 
Private Const INFINITE = -1&
 
Private Sub Thread(Value As ThreadCalc)
    Dim i   As Long
    Dim s   As Double
 
    For i = 1 To Value.Count
        s = s + 1 / i
    Next
    
    Value.Result = s
End Sub
Public Function Calc(ThreadCount As Long, TimeMS As Long) As Double
    Dim i         As Long
    Dim threads() As Long
    Dim values()  As ThreadCalc
    Dim Count     As Long
    Dim Begin     As Currency
    Dim Last      As Currency
    Dim Freq      As Currency
    
    QueryPerformanceFrequency Freq
    
    Count = 1000000000 \ ThreadCount
    
    ReDim threads(ThreadCount - 1)
    ReDim values(ThreadCount - 1)
        
    For i = 0 To ThreadCount - 1
        values(i).Count = Count
        threads(i) = CreateThread(ByVal 0&, 4096, AddressOf Thread, values(i), 0, 0)
    Next
    
    WaitForMultipleObjects 0, 0, 0, 0
    
    QueryPerformanceCounter Begin
    
    WaitForMultipleObjects ThreadCount, threads(0), True, INFINITE
    
    QueryPerformanceCounter Last
    
    TimeMS = (Last - Begin) / Freq * 1000
End Function
Я увеличил количество итераций в 10 раз у себя и у тебя. Сравним время?
Во-первых оно показывается неправильно - это не время выполнения вычислений.
Во-вторых код на VB6 опять обогнал PB, что по "неправильному" времени, что по "правильному".
Миниатюры
Какой бейсик быстрее  
Вложения
Тип файла: rar CompareVB6PB.rar (17.8 Кб, 5 просмотров)
1
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.06.2014, 21:44
Очередной код написан 1:1, это одинаковые кнопки, окна, процедуры. Все настройки по умолчанию.
Результат работы:


Тест в очередной раз показывает -это МИФ, что VB6 работает так же быстро, как и PureBasic.
И не надо ни каких потоков, в VB6 нет встроенной их поддержки, как и встроенного ассемблера, а в PureBasic есть и то и другое. Последнее обновление на VB6 было в лохматых 90-х, а на PureBasic на прошлой неделе. VB6 однозначно динозавр!
Или может у меня комп особенный, не любит VB Проверяйте, исходники, готовые программы:
Вложения
Тип файла: zip Bench.zip (16.3 Кб, 5 просмотров)
0
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
12.06.2014, 22:12
Pro_grammer, ты в курсе что в VB6 есть опции оптимизации? Что ты дал - это программа скомпилированная без единой опции оптимизации с проверкой аргументов и т.п.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Тест в очередной раз показывает -это МИФ, что VB6 работает так же быстро, как и PureBasic.
Твой тест некорректен. Я привет выше тест который доказывает обратное, и привел ассемблерный листинг какой компилятор что компилирует.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
И не надо ни каких потоков, в VB6 нет встроенной их поддержки, как и встроенного ассемблера, а в PureBasic есть и то и другое. Последнее обновление на VB6 было в лохматых 90-х, а на PureBasic на прошлой неделе. VB6 однозначно динозавр!
Поддержка есть, и оффициальная, для чего тогда в свойствах проекта есть графа Threading Model? Насчет ассемблера могу сказать что на VB6 можно вставки ассемблерные делать, если уж преспичило.
Миниатюры
Какой бейсик быстрее  
1
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.06.2014, 23:49
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Все настройки по умолчанию.
Все настройки по умолчанию, на обеих языках.
Цитата Сообщение от The trick Посмотреть сообщение
Поддержка есть, и оффициальная,
Перечислите встроенные функции или процедуры VB6, открывающие работу с потоками?
Цитата Сообщение от The trick Посмотреть сообщение
для чего тогда в свойствах проекта есть графа Threading Model?
Думаю, что для одновременного запуска нескольких копий COM объектов или типа того.

Цитата Сообщение от The trick Посмотреть сообщение
ассемблерный листинг
Подозреваю, что старый компилятор просто даже теоретически не может воспользоваться всеми достижениями и возможностями современных процессоров.
1
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
13.06.2014, 00:00
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Все настройки по умолчанию, на обеих языках.
И что код на PB предупредит при переполнении и выходе за пределы массива если что? Давайте тогда вставим эту проверку и в PB.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Подозреваю, что старый компилятор просто даже теоретически не может воспользоваться всеми достижениями и возможностями современных процессоров.
А PB может? Я привел листинг обычного цикла, который в бейсике существует с самого начала - цикла For и результаты работы комилятора. На C++ этот код будет почти таким же (если надо, могу и на C++ выложить, результаты будут почти такие же).
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Перечислите встроенные функции или процедуры VB6, открывающие работу с потоками?
Многопоточность в VB6 поддерживается на уровне COM. В аттаче пример многопоточности стандартными средствами без использования API.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Думаю, что для одновременного запуска нескольких копий COM объектов или типа того.
На этот вопрос я тебе отвечу в личку, т.к. писать много, а кидать ссылки на сторонние ресурсы нельзя.
Вложения
Тип файла: zip honestMultiThread.zip (7.2 Кб, 4 просмотров)
2
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
13.06.2014, 00:18
Кстати, я сейчас работаю над модулем который может инициализировать контекст потока (я его изначально для глобального хука разрабатывал), поэтому появляется возможность писать многопоточные приложения и отлаживать их в IDE.
1
Эксперт по электронике
7153 / 3332 / 342
Регистрация: 28.10.2011
Сообщений: 13,148
Записей в блоге: 7
13.06.2014, 10:12
Цитата Сообщение от The trick Посмотреть сообщение
А PB может?
Да. В добавок у него компилятор FASM, а он поддерживает не только стандартные инструкции, но и MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, SSE4a, AVX и 3DNow!, а также EM64T и AMD64 (включая AMD SVM и Intel SMX). http://ru.wikipedia.org/wiki/Fasm
И их можно писать непосредственно в коде, а не в виде оп. кодов как это делают в VB.
Макросы ФАСМа предоставляют довольно интересные возможности модификации кода во время компиляции. Например, можно ими зашифровать все текстовые строки и они станут не читаемыми в исполняемом файле. А можно подменять некоторые инструкции в процессе компиляции. Например таким образом удалось успешно исправить соглашение вызова с stdcall на thiscall. Причем в исполняемом файле это выглядит не как костыль, а реально как вызов thiscall, т. е. никаких следов (лишний инструкций) от stdcall не осталось.
VB6 поддерживает что-то подобное?

Добавлено через 5 минут
Цитата Сообщение от The trick Посмотреть сообщение
Кстати, я сейчас работаю над модулем который может инициализировать контекст потока (я его изначально для глобального хука разрабатывал), поэтому появляется возможность писать многопоточные приложения и отлаживать их в IDE.
В PB ничего придумывать не нужно. Многопоточное приложение без проблем отлаживается в IDE.
В PB можно создать переменную, массив, экземпляр структуры и т. д. в контексте текущего потока. http://purebasic.com/documenta... eaded.html
В VB как я понимаю такого нет. И не факт что его отладчик сможет стабильно работать с многопоточным приложением.
1
Модератор
10065 / 3910 / 885
Регистрация: 22.02.2013
Сообщений: 5,860
Записей в блоге: 79
13.06.2014, 11:03
Цитата Сообщение от locm Посмотреть сообщение
Да. В добавок у него компилятор FASM, а он поддерживает не только стандартные инструкции, но и MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, SSE4a, AVX и 3DNow!, а также EM64T и AMD64 (включая AMD SVM и Intel SMX). http://ru.wikipedia.org/wiki/Fasm
Это может ассемблер, как я вижу обычные операторы PB Не применяют никаких SIMD оптимизаций. Я тоже могу использовать MMX и SSE на VB6.
Цитата Сообщение от locm Посмотреть сообщение
Например, можно ими зашифровать все текстовые строки и они станут не читаемыми в исполняемом файле. А можно подменять некоторые инструкции в процессе компиляции. Например таким образом удалось успешно исправить соглашение вызова с stdcall на thiscall. Причем в исполняемом файле это выглядит не как костыль, а реально как вызов thiscall, т.е. никаких следов (лишний инструкций) от stdcall не осталось.
Центральным местом VB6 является COM. В VB6 можно без труда несколькими строчками написать ActiveX сервер, где можно обработать событие одного объекта в другом процессе или другом компьютере. С легкостью работать с COM объектами системы, создавать ActiveX Dll(EXE), ActiveX контролы. В VB6 нельзя никак "навредить" себе. Все что ты написал, так или иначе можно сделать в VB6, конечно не стандартными средствами. С шифровкой я даже как-то выкладывал пример.
Цитата Сообщение от locm Посмотреть сообщение
В PB ничего придумывать не нужно. Многопоточное приложение без проблем отлаживается в IDE.
В PB можно создать переменную, массив, экземпляр структуры в контексте текущего потока. http://purebasic.com/documenta... eaded.html
VB как я понимаю такого нет. И не факт что его отладчик сможет стабильно работать с многопоточным приложением.
В VB6 можно создать объект, который будет работать в другом потоке. При Apartament Threaded все глобальные переменные размещаются в секции TLS.
И вообще это не относится все к теме, т.к. у нас вопрос о скорости работы.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2014, 11:03

Какой быстрее
Подскажите какой процессор лучше Intel Pentium Dual-Core E6300 или amd athlon ii x2 250

Какой процессор быстрее?
i5 650 разогнанный до 3.8 Ггц или i5 760 до 3 Ггц?

Какой алгоритм быстрее?
1. Тангенс можно вычислить как sin(x)/cos(x), разложив обе функции в ряд Тейлора. 2. А можно разложить в цепную дробь, какой из этих ...

Какой из транспортов быстрее?
5.Для того чтобы добраться до института у Кати и Лены есть варианта - на троллейбусе или маршрутке. Троллейбус едет до института T1 минут,...

Какой метод быстрее
Есть два метода определяющие можно ли отсортировать строку из 5 чисел, например 87695, так, чтобы числа шли по порядку, 56789. 1. Метод:...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru