SASGIS - SAS.Планета
View Issue Details
0001927SAS.ПланетаРефакторингpublic13-05-2013 14:0828-05-2013 06:20
vdemidov 
zed 
normalminorhave not tried
resolvedfixed 
121010 
131111131111 
0001927: Собрать dll с реализацией CityHash
Для реализации эффективного кэширования линий полигонов и бинарных тайлов нужно иметь хорошую быструю хэш функцию с выходом 64 бита. Под Delphi я нашел только CRC64, но у нее плохо с равномерностью. Хорошая функция CityHash но она достаточно сложная для портирования под делфи, поэтому эффективнее будет вынести ее в отдельную dll.

Исходники живут по адресу http://code.google.com/p/cityhash/

Нужны такие функции:

// Hash function for a byte array.
uint64 CityHash64(const char *buf, size_t len);


// Hash function for a byte array. For convenience, a 64-bit seed is also
// hashed into the result.
uint64 CityHash64WithSeed(const char *buf, size_t len, uint64 seed);


// Hash function for a byte array. For convenience, two seeds are also
// hashed into the result.
uint64 CityHash64WithSeeds(const char *buf, size_t len, uint64 seed0, uint64 seed1);
No tags attached.
child of 0002076resolved vdemidov Добавить в наборы векторных объектов хэш входящих в них объектов и операцию проверки равенства 
child of 0002077confirmed  Добавить вычисление хэша бинарных данных при загрузке из тайлохранилища 
child of 0002078resolved vdemidov Добавить вычисление хэша для растровых объектов при создании 
Issue History
13-05-2013 14:08vdemidovNew Issue
13-05-2013 14:08vdemidovStatusnew => confirmed
13-05-2013 14:10vdemidovDescription Updatedbug_revision_view_page.php?rev_id=5372#r5372
13-05-2013 17:55zedFile Added: CityHash.zip
13-05-2013 17:58zedNote Added: 0011378
13-05-2013 18:11zedFile Added: CityHash.VC2010.zip
13-05-2013 18:22vasketsovNote Added: 0011379
13-05-2013 18:55vdemidovNote Added: 0011380
13-05-2013 18:58vdemidovNote Added: 0011381
13-05-2013 19:29vasketsovNote Added: 0011383
13-05-2013 20:49vdemidovNote Added: 0011384
18-05-2013 17:51zedAssigned To => zed
18-05-2013 17:51zedStatusconfirmed => feedback
20-05-2013 11:05vdemidovNote Added: 0011408
20-05-2013 11:05vdemidovStatusfeedback => assigned
21-05-2013 05:19zedNote Added: 0011410
21-05-2013 06:08vdemidovNote Added: 0011411
21-05-2013 06:21zedNote Added: 0011412
28-05-2013 05:11zedFile Deleted: CityHash.zip
28-05-2013 05:11zedFile Deleted: CityHash.VC2010.zip
28-05-2013 05:12zedNote Added: 0011422
28-05-2013 05:13zedStatusassigned => resolved
28-05-2013 05:13zedFixed in Version => 131111
28-05-2013 05:13zedResolutionopen => fixed
28-05-2013 05:13zedStatusresolved => closed
28-05-2013 05:13zedTarget Version24xxxx => 131111
28-05-2013 06:20vdemidovStatusclosed => resolved
09-08-2013 08:31vdemidovRelationship addedchild of 0002076
09-08-2013 08:40vdemidovRelationship addedchild of 0002077
09-08-2013 08:45vdemidovRelationship addedchild of 0002078

Notes
(0011378)
zed   
13-05-2013 17:58   
Либа собралась, а вот тестовая утилитка - нет, так что за работоспособность не скажу. Тестируй, авось заведётся.
(0011379)
vasketsov   
13-05-2013 18:22   
А как у неё с коллизиями для массива lonlat будет?
С murmur сравнивал?
(0011380)
vdemidov   
13-05-2013 18:55   
С коллизиями должно быть все хорошо. Собственно для массивов координат я и хочу использовать ее.
Murmur3 128 бит, что вроде бы избыточно. А по качеству они вроде бы близки.
(0011381)
vdemidov   
13-05-2013 18:58   
Zed, спасибо большое. Я надеялся, что ты скопилось и собрался об этом попросить, а ты уже все сделал.
(0011383)
vasketsov   
13-05-2013 19:29   
>Murmur3 128 бит
Так есть же Murmur2 какой-то вариант на 64 бита
Впрочем по большому счёту играться без разницы с какой.
ps. Тут кстати тоже Murmur упоминается:
http://habrahabr.ru/post/117360/
(0011384)
vdemidov   
13-05-2013 20:49   
>Впрочем по большому счёту играться без разницы с какой.
Именно
(0011408)
vdemidov   
20-05-2013 11:05   
Я понимаю, что это уже наглость, но не мог бы ты сделать и простенький паскалевский юнит, что бы можно было эту dll пользовать в делфе?
(0011410)
zed   
21-05-2013 05:19   
А в чём сложность написать прототипы для 3-х функций? Тут работы максимум на 10 минут...
(0011411)
vdemidov   
21-05-2013 06:08   
Да собственно никакой сложности разве что вопрос с типом вызова. Как я понимаю там cdecl. Просто у меня в последнее время и 10 минут нету :(
(0011412)
zed   
21-05-2013 06:21   
>Как я понимаю там cdecl
Да.

>Просто у меня в последнее время и 10 минут нету
Вот когда время появится, тогда и поговорим. Оно и dll небыло смысла сейчас собирать, если ты не собираешься пока ничего кодить. Чисто лежит под сукном до лучших времён...
(0011422)
zed   
28-05-2013 05:12   
https://bitbucket.org/sas_team/cityhash