SASGIS - SAS.Планета
View Issue Details
0002327SAS.Планета[All Projects] Хотелкаpublic25-01-2014 19:1902-09-2014 12:44
infobriz 
vdemidov 
normaltweakhave not tried
closedwon't fix 
 
 
0002327: Конвертировал CityHash.c в CityHash.pas
приложен также конвертированый тест от Google
Тест проходит. Cкорость работы немного упала.
No tags attached.
7z CityHash.pas.test.7z (56,141) 25-01-2014 19:19
http://www.sasgis.org/mantis/file_download.php?file_id=1671&type=bug
Issue History
25-01-2014 19:19infobrizNew Issue
25-01-2014 19:19infobrizFile Added: CityHash.pas.test.7z
25-01-2014 19:41vdemidovNote Added: 0013687
30-01-2014 13:29vdemidovStatusnew => feedback
13-02-2014 12:44zedNote Added: 0013773
13-02-2014 12:55vdemidovNote Added: 0013774
24-02-2014 16:06vdemidovNote Added: 0013857
24-02-2014 16:06vdemidovStatusfeedback => resolved
24-02-2014 16:06vdemidovResolutionopen => won't fix
24-02-2014 16:06vdemidovAssigned To => vdemidov
24-02-2014 16:06vdemidovStatusresolved => closed
02-09-2014 12:44zedNote Added: 0014604
02-09-2014 12:45zedNote Edited: 0014604bug_revision_view_page.php?bugnote_id=14604#r6250

Notes
(0013687)
vdemidov   
25-01-2014 19:41   
И зачем оно нужно, если скорость упала?
(0013773)
zed   
13-02-2014 12:44   
Кстати, если есть такое уж сильное желание избавиться от этой dll, то можно ещё попробовать скомпилировать её в С++Builder и подключить как obj файлик к Delphi (так обычно подключается zlib во многих проектах). Скорость при этом упасть не должна.
(0013774)
vdemidov   
13-02-2014 12:55   
Лично мне лишняя dll совсем не мешает. Вот если бы скорость росла, то это был бы аргумент. А так ИМХО овчинка выделки не стоит.
(0013857)
vdemidov   
24-02-2014 16:06   
В общем, спасибо за помощь, может когда-нибудь и пригодится, но пока особого смысла я не вижу.
(0014604)
zed   
02-09-2014 12:44   
(edited on: 02-09-2014 12:45)
Ради интереса попробовал слинковать скомпиленный в С++Builder объектный файл и замерить скорость. Предварительно, правда пришлось сконвертировать код в простой Си, иначе Delphi тупо не видел экспортируемых функций.

По результатам тестов оказалось, что производительность таки упала почти в 2 раза по сравнению с dll. Скорость оказалась даже меньше, чем у паскалевского кода, который всего раза в 1,5 медленнее чем dll.

Единственное, что в сишном коде для билдера пришлось прописать не очень быстрые реализации bswap_32 и bswap_64, но не может быть, чтобы из-за этого скорость упала в 2 раза. Видно, у билдера оптимизатор плохо справляется со своей задачей.

Если вдруг кого заинтересует:
- код сложил в репо
- тестовые бинарники лежат в этом архиве