PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OffTop » PureBasic 6.00


PureBasic 6.00

Сообщений 1 страница 10 из 10

1

https://www.purebasic.fr/english/viewto … mp;t=77272
Теперь PB может транслировать код не только в асссемблер, но и в Си.

0

2

Немного потестировал эту версию. :)
Транслятор в Си дает хороший прирост скорости выполнения программы. :)  Для теста взял код вычисления числа PI.
Вычисление 20 тысяч знаков после запятой выполняется примерно в 2 раза быстрее чем при трансляции в асм. http://pure-basic.narod.ru/forum_files/PI_C.zip
А вот скорость компиляции не небольшая, точнее ее сильно тормозит антивирус. Такое впечатление что он усилено сканирует создаваемый исполняемый файл и ищет угрозы. При трансляции в асм такого обычно не было.

0

3

Имхо, версия 6 идёт в сторону Си, хотя идеология Pb изначально была в виде чистого и компактного кода, удобной надстройкой над fasm'ом с удобным ide, а Си уже не догнать - слишком далеко ушёл.
Скорость обеспечивается алгоритмами, а не оптимизацией кода. Число пи в maple до миллионного знака вычисляется за доли секунды, есть экспорт в библиотеки для подключения на Си. Версия 6 не компилирует модальные окна из ресурсов, что-то сломали..

Отредактировано bizdon (01.08.2021 20:25:21)

0

4

bizdon написал(а):

Число пи в maple до миллионного знака вычисляется за доли секунды, есть экспорт в библиотеки для подключения на Си

spigot побыстрее считает.

0

5

bizdon написал(а):

Имхо, версия 6 идёт в сторону Си, хотя идёология Pb изначально была в виде чистого и компактного кода, удобной надстройкой над fasm'ом

Проблема асма в том что он платформозависим. Даже в пределах одного процессора Intel, есть большая разница между асмом x86 и x64.
Про ARM и другие процессоры и говорить нечего. Трансляция в Си позволяет уйти от различий процессора переложив это с транслятора PB на компилятор Си. Фред об этом писал https://www.purebasic.fr/blog/?p=480

bizdon написал(а):

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

Если скомпилировать один и тот же PB код, транслятором в асм и транслятором в Си, последний вариант работает быстрее. Пример я выкладывал PureBasic 6.00

bizdon написал(а):

Версия 6 не компилирует модальные окна из ресурсов, что-то сломали

Она пока на стадии альфы. Посмотрим на релиз.

0

6

bizdon написал(а):

Имхо, версия 6 идёт в сторону Си

Я бы сказал, что идёт в сторону FreeBasic, который как раз кросс-компилятор для gcc.

0

7

если ориентируется на Си, то хорошо бы сделано, о чем просили - возможность объявления массивов, как в Си.

0

8

egons написал(а):

если ориентируется на Си, то хорошо бы сделано, о чем просили - возможность объявления массивов, как в Си.

А что, по вашему, не так с массивами сейчас?

Надеюсь код заставит улыбнуться

Код:
; массив целых 10 на 10 на 10
Structure LLL
  ll.i[10]
EndStructure
Structure MMM
  mm.LLL[10]
EndStructure
Structure NNN
  nn.MMM[10]
EndStructure  

Define M_3_10.NNN
Define *p_Int.Integer

M_3_10\nn[0]\mm[0]\ll[0] = 0
M_3_10\nn[9]\mm[9]\ll[9] = 999

Debug M_3_10\nn[0]\mm[0]\ll[0]
Debug M_3_10\nn[9]\mm[9]\ll[9]

; и вишека на торте
Debug SizeOf(M_3_10)/SizeOf(Integer)

*p_Int = @M_3_10
Debug *p_Int\i
*p_Int = *p_Int + SizeOf(M_3_10) - SizeOf(Integer)
Debug *p_Int\i

Я долго не подозревал, что в PB таки есть типизированные указатели.
Пока Пётр не ткнул меня в то, что всё реализовано через структуры. ( в том числе для базовых типов )
Почему то я сам не сразу обратил на это внимание.

Отредактировано useful (Вчера 21:26:50)

0

9

useful написал(а):

А что, по вашему, не так с массивами сейчас?

код на Си/Борман Паскаль:

Код:
    pindex: array[0..23] of byte = {plane index: 4 points = 1 plane}
     (0,3,1,2,0,5,4,1,0,6,2,4,6,3,2,7,3,5,1,7,4,7,6,5);
Код:
short lx[8]={1,1,1,1,-1,-1,-1,-1};
short ly[8]={1,1,-1,-1,1,1,-1,-1};
short lz[8]={1,-1,1,-1,1,-1,1,-1};

Код здесь:

Код:
  Restore pindex_
 For i=0 To 23
   Read.b pindex(i)
 Next i

pindex_:
Data.b 0,3,1,2,0,5,4,1,0,6,2,4,6,3,2,7,3,5,1,7,4,7,6,5

0

10

Код:
DataSection
pindex_:
Data.b 0,3,1,2,0,5,4,1,0,6,2,4,6,3,2,7,3,5,1,7,4,7,6,5
EndDataSection

Structure PIND
  pindex.b[24]
EndStructure
Define *p_pindex.PIND
*p_pindex = ?pindex_
Debug *p_pindex\pindex[ 0] ;0
Debug *p_pindex\pindex[23] ;5

0


Вы здесь » PureBasic - форум » OffTop » PureBasic 6.00