|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
Нужно сделать уникальный ключ из двух целых неотрицательных чисел i и j (индексы двумерного массива). Приходит в голову что-то типа: string key = i + "," + j; Может у кого-то есть еще идеи? Преобразование в string с последующей конкатенацией - не очень быстрый способ. Другой пока на ум не идет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 10:14 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
vlsafНужно сделать уникальный ключ из двух целых неотрицательных чисел i и j (индексы двумерного массива). Приходит в голову что-то типа: string key = i + "," + j; Может у кого-то есть еще идеи? Преобразование в string с последующей конкатенацией - не очень быстрый способ. Другой пока на ум не идет.Для двух неотрицательных int, например, как-то так: Код: c# 1.
или так: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 10:55 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
sphinx_mv, спасибо огромное! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 13:00 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
vlsaf, А чем не подходит банальное сложение? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 14:25 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
ЕвгенийВvlsaf, А чем не подходит банальное сложение? сумма может наложиться на другое число. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 14:46 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
beg-in-erЕвгенийВvlsaf, А чем не подходит банальное сложение? сумма может наложиться на другое число. С этого момента можно поподробнее? Что разве мощность множества i * 0x100000000 + j больше i+j? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 23:07 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
ЕвгенийВЧто разве мощность множества i * 0x100000000 + j больше i+j? Если в обоих случаях мы будет сохранять результат в long, то мощность будет, очевидно, одинаковой. beg-in-er похоже имел в виду что сложение двух чисел можеть дать неуникальные значения (как требуется автору вопроса). Например, пары 1+3, 2+2. Решение sphinx_mv лишено этого недостатка. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2013, 01:06 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
bazile, именно это и имел ввиду Код: c# 1. 2. 3. 4.
это число однозначно определяет пару "hello world" хотя яндекс при поиске бинарных пар использует словарь в 15-20 миллионов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2013, 02:06 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
Все-таки эффективность решения зависит от дальнейшего применения этого значения. У меня встречались подобные ситуации, но часто приходилось выбирать в пользу строки, как это не кощунственно звучит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2013, 03:02 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
beg-in-erbazile, именно это и имел ввиду Код: c# 1. 2. 3. 4.
это число однозначно определяет пару "hello world" хотя яндекс при поиске бинарных пар использует словарь в 15-20 миллионов. Логику программы никогда не нужно завязывать на string.GetHashCode(). В МС меняют этот алгоритм меняют каждую неделю, дабы выявить возможную зависимость. -1406257598958874302 - в имеющейся и всех последующих реализациях определяет "hello world" и еще ОГРОМНОЕ количество строк! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2013, 11:08 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
ЕвгенийВВ МС меняют этот алгоритм меняют каждую неделю, дабы выявить возможную зависимость. Каким боком здесь уязвимость? Контракт GetHashCode вообще не подразумевает уникальности возвращаемого значения, у него задача - балансировка дерева. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2013, 11:35 |
|
Нужно маскимально быстро сформировать ключ по двум целым числам.
|
|||
---|---|---|---|
#18+
ЕвгенийВGetHashCode(). В МС меняют этот алгоритм меняют каждую неделю ну есть же реализация. которая не зависит от платформы и прочих нюансов. в конце концов его можно переопределить для System.Object Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
а если строк много, но не очень, то лучше гонять словарь. яндекс то не парится. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2013, 13:15 |
|
|
start [/forum/topic.php?fid=20&msg=38271900&tid=1404631]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
87ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 332ms |
total: | 522ms |
0 / 0 |