Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ограничение по размеру массива в Лиспе? / 6 сообщений из 6, страница 1 из 1
12.01.2010, 11:10:58
    #36404797
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение по размеру массива в Лиспе?
Привет всем.
Сейчас у нас с коллегами посленовогодний перерывчик, развели небольшой холивар на тему, какой язык программирования круче :). В качестве эталонного алгоритма было выбрано нахождение простых чисел от 2 до 10000000, компилируем без оптимизаций. Фортран оказался на 10% быстрее С++, на 5% быстрее С. Решили сделать то же на Лиспе. Используемый компилятор - gcl.
Код: plaintext
1.
2.
3.
4.
5.
6.
(progn 
(defconstant maxNum  128 ) 
(setq allNums (make-array (+ maxNum  1 ))) 
(setf (aref allNums  2 ) t)
(do* ((i  3  (+ i  2 ))) ((> i maxNum)) (list (setf (aref allNums i) t) (do ((j  3  (+ j  2 ))) ((> j (sqrt i))) (block innerLoop (if (and (aref allNums j) (= (rem i j)  0 )) (setf (aref allNums i) nil) (return-from innerLoop))))))
(do ((i  2  (+ i  1 ))) ((> i maxNum)) (if (aref allNums i) (block output (prin1 i) (terpri)))) 
)
Этот алгоритм 1 в 1 повторяет использованые на других языках. Проблема в том, что когда я пытаюсь увеличить размер создаваемого массива хоть на 1 (до 129), получаю сообщение об ошибке:
Error: Caught fatal error [memory may be damaged]
Fast links are on: do (si::use-fast-links nil) for debugging
Error signalled by SYSTEM::SET-UP-TOP-LEVEL.
Backtrace: DO
Сначала подумал, что это ограничение на длину массива, но вроде как стандарт гарантирует минимум 1024. Подскажите, пожалуйста, в чем может быть проблема?
--------------
Festina lente
...
Рейтинг: 0 / 0
12.01.2010, 12:23:14
    #36404955
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение по размеру массива в Лиспе?
Mozok пишет:
> С++, на 5% быстрее С. Решили сделать то же на Лиспе. Используемый
> компилятор - gcl.

Не самый лучший. Рекомендую closure или sbcl

> Сначала подумал, что это ограничение на длину массива, но вроде как
> стандарт гарантирует минимум 1024. Подскажите, пожалуйста, в чем может
> быть проблема?

В лиспе ограничений на размер нет.
В конкретно GCL -- я его не знаю.
Это безусловно проблема самого GCL.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.01.2010, 14:44:17
    #36405385
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение по размеру массива в Лиспе?
Не знаток лиспа. Но это похоже на какой-то баг.
...
Рейтинг: 0 / 0
12.01.2010, 20:24:57
    #36406269
SQL_Lamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение по размеру массива в Лиспе?
Mozok,



в clisp все нормально с твоим алгоритмом при любой размерности.
...
Рейтинг: 0 / 0
12.01.2010, 20:56:27
    #36406306
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение по размеру массива в Лиспе?
Спасибо всем за ответы. Просто мы решили использовать именно гнусовые компиляторы для однородности результатов (gfortran, gcc, g++, и вот gcl). Видимо, это действительно чисто его глюк. Завтра еще погуглю, нужно ж узнать конкретно.
--------------
Festina lente
...
Рейтинг: 0 / 0
21.01.2010, 10:17:32
    #36422048
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение по размеру массива в Лиспе?
Mozok wrote:
> Спасибо всем за ответы. Просто мы решили использовать именно гнусовые
> компиляторы для однородности результатов (gfortran, gcc, g++, и вот
> gcl). Видимо, это действительно чисто его глюк. Завтра еще погуглю,
> нужно ж узнать конкретно.

Я ни разу за года три общения с лиспом не слышал от кого-то, чтобы рекомендовали
хотя бы для каких-то целей GCL.

SBCL, CLOSURE (open-mcl), CLISP, ECL. + коммерческие лиспы.

Не советую с ним связываться.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ограничение по размеру массива в Лиспе? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]