Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
159 / 104 / 124
Регистрация: 01.04.2014
Сообщений: 466
Записей в блоге: 7

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

04.06.2014, 15:44. Показов 3518. Ответов 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
11.06.2014, 19:04
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Как видно, что PureBasic быстрее VB6 в 3.7 раза!
Это дополнительный аргумент к вопросу о том, жив ли ещё VB6 или уже нет
Нет. Каковы условия проведения теста? Можно ли оба EXE файла? У меня другой результат в VB6. Да в принципе он здесь не будет различаться особо на разных языках.
Миниатюры
Какой бейсик быстрее  
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Эксперт по электронике
6785 / 3212 / 335
Регистрация: 28.10.2011
Сообщений: 12,545
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.06.2014, 13:16
locm, во-первых, тест не такой и некорректный. У меня потоки стартуют все одновременно, у тебя уже потоки уже работают, только потом начинает замеряться время. Грубо говоря потоки уже посчитали "половину", а ты еще даже не запустил замер времени.
во-вторых, у тебя неправильно считается значение.
0
Эксперт по электронике
6785 / 3212 / 335
Регистрация: 28.10.2011
Сообщений: 12,545
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.06.2014, 13:44
Цитата Сообщение от locm Посмотреть сообщение
Время запуска 8 потоков меньше 2 миллисекунд. Погрешность незначительная и на результат повлиять не может.
Нет. У тебя поток уже считает, а начальное время старта еще не замерялось. Если в моем коде также сделать то у меня тоже по 30мс показывает, хотя реально программа работает даже на глаз дольше.
Цитата Сообщение от locm Посмотреть сообщение
Почему?
Потому что ответ должен быть приблизительно равен 18.997, у тебя каждый поток считает до ~17 - смотри код, не зря же я передавал начальное значение счетчика.
На VB6 получился более компактный и быстрый код, листинги прилагаю ниже, также комментарии написал для PB.
Миниатюры
Какой бейсик быстрее  
0
Эксперт по электронике
6785 / 3212 / 335
Регистрация: 28.10.2011
Сообщений: 12,545
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.06.2014, 14:38
Цитата Сообщение от locm Посмотреть сообщение
Время выполнения этого участка кода при CountThreads = 8 меньше 2 миллисекунды.
При чем здесь время выполнения этого участка кода? У тебя уже другой поток стартанул и начал считать, т.к. твой CreateThread вызывает внутри кучу функций в том числе WaitForSingleObject. У тебя уже вычисления идут в другом потоке, пока этот код выполняется. Убери в моем коде флаг CREATE_SUSPENSED и протестируй мой код, тоже самое что и твой код сейчас.
Цитата Сообщение от locm Посмотреть сообщение
Это не много и не может повлиять на результат.
Как раз влияет.
Цитата Сообщение от locm Посмотреть сообщение
Как бы там ни было, это не влияет на время вычисления.
Это понятно, но зачем такой тест, который делает неправильный расчет?
Ассемблерный листинг показывает, что VB6 скомпилировал более оптимальный код.
1
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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 / 2839 / 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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 / 2839 / 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.06.2014, 00:18
Кстати, я сейчас работаю над модулем который может инициализировать контекст потока (я его изначально для глобального хука разрабатывал), поэтому появляется возможность писать многопоточные приложения и отлаживать их в IDE.
1
Эксперт по электронике
6785 / 3212 / 335
Регистрация: 28.10.2011
Сообщений: 12,545
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru