Автор Тема: FreeBASIC Нет в репозитарии и несколько вопросов!  (Прочитано 1745 раз)

Оффлайн flint1975

  • Участник
  • *
  • Сообщений: 1 441
Собственно запрос в багзиллу на сборку я на днях отправлю, но при экспериментах выяснилось следующее:
1. Очень качественно компилирует ! (И не мудрено, он генерит промежуточный asm код, а потом его компилит уже штатным gcc)

работает с ним инженер-электронщик для тестирования работы оборудования, дабы не изучать различные среды программирования. Так вот он в восторге!

2. При экспериментах:
   а) под win XP компиляция кода for i=1 to 1000000000 next i в результате всего 4 команды :) mov inc cp jp*
   б) под win XP компиляция кода a=exp(3) в результате всего 1 команда a=*.********* (т.е. вычисление константы происходит на этапе компиляции)
   в) выполнение кода из пункта а) под win XP занимает 10 мс, а под кентавром 17 мс - что несколько удручает. Попытка запускать код от рута и с приоритетом (nice) -15 заметного улучшения не дали, хотя вполне возможно, что виноват метод измерения (измеряли в теле той же программы запоминая показания таймера, и выводя его на экран), может влиять время обращения к библиотеке для чтения показаний таймера.

Кто может прокомментировать?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 138
    • Домашняя страница
Собственно запрос в багзиллу на сборку я на днях отправлю, но при экспериментах выяснилось следующее:
1. Очень качественно компилирует ! (И не мудрено, он генерит промежуточный asm код, а потом его компилит уже штатным gcc)

работает с ним инженер-электронщик для тестирования работы оборудования, дабы не изучать различные среды программирования. Так вот он в восторге!

2. При экспериментах:
   а) под win XP компиляция кода for i=1 to 1000000000 next i в результате всего 4 команды :) mov inc cp jp*
   б) под win XP компиляция кода a=exp(3) в результате всего 1 команда a=*.********* (т.е. вычисление константы происходит на этапе компиляции)
   в) выполнение кода из пункта а) под win XP занимает 10 мс, а под кентавром 17 мс - что несколько удручает. Попытка запускать код от рута и с приоритетом (nice) -15 заметного улучшения не дали, хотя вполне возможно, что виноват метод измерения (измеряли в теле той же программы запоминая показания таймера, и выводя его на экран), может влиять время обращения к библиотеке для чтения показаний таймера.

Кто может прокомментировать?
FreeBasic есть в репозториях Sisyphus и p7/t7:
http://packages.altlinux.org/en/Sisyphus/srpms/freebasic
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 138
    • Домашняя страница
На таких больших числах >10.000.000 итераций программа на FreeBasic просто зависает.
[cas@cas bas]$ echo -e "for i=1 to 10000000\nnext i" > task_a.bas
[cas@cas bas]$ fbc -lang qb task_a.bas
[cas@cas bas]$ time ./task_a

Time:   0:00.09
System: 0.00
User:   0.06
При увеличении до 100 млн. итераций начинаются многочисленные вызовы nanosleep(). Всё же он написан для 32-битных систем.

UPD: думаю, по вопросу больших чисел лучше смотреть форум FreeBASIC и спрашивать его разработчиков.
« Последнее редактирование: 28.11.2013 14:42:19 от Skull »
Андрей Черепанов (cas@)

Оффлайн Pureproft

  • Участник
  • *
  • Сообщений: 335
под win XP занимает 10 мс, а под кентавром 17 мс

На каком процессоре получены эти цифры?
Рассвет наступит неизбежно!

Оффлайн flint1975

  • Участник
  • *
  • Сообщений: 1 441
точно не уверен , но по моему у него нетбук с атомом 2800
а вот с количеством 0 в цикле, я мог нагнать. сегодня уточню условия тестирования