История изменений
Исправление den73, (текущая версия) :
Ну так-то вообще, для тех, кто не успел поставить часы, у SBCL (и большинства лиспов) внутри 32-битное представление юникодного символа, а у Питона и в линуксе внутри UTF-8. Поэтому программа на лиспе должна, получая строки из линукса через FFI, их преобразовывать. А наша программа в основном гоняет строки туда-сюда и лишь иногда что-то делает. Так вот, чтобы «научиться работать со строками», нужно заново реализовать для UTF-8 все функции работы со строками, которые уже есть для 32-битного представления. А это немало, например, библиотека регэкспов.
Далее, в программе были алгоритмические проблемы, и я ускорил её примерно в 10 раз. Оставалось лишь где-то 3-кратное отставание от Python, но на эту оптимизацию ушло время. А начальство всё это время стояло над душой.
Сегодня я додумался лишь до того, что надо было попробовать поискать такую библиотеку, т.к. наверняка мы не первые столкнулись с этими граблями. Но не факт, что такая библиотека нашлась бы, в ней были бы регэкспы и т.п.
Исправление den73, :
Ну так-то вообще, для тех, кто не успел поставить часы, у SBCL (и большинства лиспов) внутри 32-битное представление юникодного символа, а у Питона и в линуксе внутри UTF-8. Поэтому программа на лиспе должна, получая строки из линукса через FFI, их преобразовывать. А наша программа в основном гоняет строки туда-сюда и лишь иногда что-то делает. Так вот, чтобы «научиться работать со строками», нужно заново реализовать для UTF-8 все функции работы со строками, которые уже есть для 32-битного представления. А это немало, например, библиотека регэкспов.
Далее, в программе были алгоритмические проблемы, и я ускорил её примерно в 10 раз. Оставалось лишь где-то 3-кратное отставание от Python, но на эту оптимизацию ушло время. А начальство всё это время стояло над душой.
Сегодня я додумался лишь до того, что надо было попробовать поискать такую библиотеку, т.к. наверняка мы не первые столкнулись с этими граблями. Но не факт, что это было бы легко реализовать.
Исходная версия den73, :
Ну так-то вообще, для тех, кто не успел поставить часы, у SBCL (и большинства лиспов) внутри 32-битное представление юникодного символа, а у Питона и в линуксе внутри UTF-8. Поэтому программа на лиспе должна, получая строки из линукса через FFI, их преобразовывать. А наша программа в основном гоняет строки туда-сюда и лишь иногда что-то делает. Так вот, чтобы «научиться работать со строками», нужно заново реализовать для UTF-8 все функции работы со строками, которые уже есть. А это немало, например, библиотека регэкспов.
Далее, в программе были алгоритмические проблемы, и я ускорил её примерно в 10 раз. Оставалось лишь где-то 3-кратное отставание от Python, но на эту оптимизацию ушло время. А начальство всё это время стояло над душой.
Сегодня я додумался лишь до того, что надо было попробовать поискать такую библиотеку, т.к. наверняка мы не первые столкнулись с этими граблями. Но не факт, что это было бы легко реализовать.