Показать сообщение отдельно
Старый 16.11.2016, 07:41   #12
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений
(для 369 пользователей)
Ответ: Скорость вызова DLL

C# медленный, .net же, не могу представить, для чего он мне. Кстати, PB на хабре называют "си-подобным бейсиком". Зная PB, можно перейти на С. Но опять же на PB я уже почти разобрался с вычислениями на GLSL и мне всего лишь надо всё оформить. А вычисления на CPU в PB, конечно, чуть медленнее, чем на C, но FreeBasic в 4 раза быстрее PB, а значит где-то на уровне GCC С++. И потоки на FB тоже из коробки и удобно реализованы. Вставки Си, вставки Asm, строки Си, библиотеки Си - всё это есть на FB. То есть смысл сейчас заморачиваться и разбираться в Сях, для того, чтобы написать библиотеку на 100 строчек, когда всё уже готово и разжевано? Когда-нибудь в другой раз, когда задача будет посерьезнее.

И да, сообщество FB реально озабочено производительностью, поэтому он не может быть медленным. У них подход следующий: многие быстрые функции стырены из библиотеки Си (например, возведение в степень поэтому такое быстрое), потом сообщество пилят на ASM'e свои функции в попытках обогнать Си, получается, конечно, редко, но всё же. Я его и отрыл то, когда гуглил быстрые строковые алгоритмы.

Sub ONE(param As Any Ptr)
Dim a As Integer
Do
a+=1
View Print 1 To 2
Print "thread One, a=";a
Sleep(70)
If a=100 Then Exit Do
Loop
Print "Thread ONE ended "
End Sub
Sub TWO(param As Any Ptr)
Dim a As Integer
Do
a+=1
View Print 3 To 4
Print "thread TWO, a=";a
Sleep(50)
If a=100 Then Exit Do
Loop
View Print 3 To 4
Print "Thread TWO ended "
End Sub

Threadcreate(@ONE())
Threadcreate(@TWO())
Sleep


(Offline)
 
Ответить с цитированием