Сейчас 03:31:26 Воскресенье, 29 декабря, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Чем структуры лучше хэш-таблицы?
NolДата: Четверг, 19 Июля 2012, 08:03:58 | Сообщение # 1
1 уровень
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Блокировки:
Вобщем недавно начал изучать vjass, и как я понял, при создании разных заклинаний структуры используются просто для хранения информации о том кто цель, кто кастер и тд. Так вот, чем же структуры лучше подходят для этих целей чем хэш-таблица?
 

SirNikolasДата: Четверг, 19 Июля 2012, 08:25:36 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Да, в триггерных заклинаниях они только для этого и используются. Они могут быть производительнее хэша, но что в действительности - не доказано. Здравый смысл подсказывает, что, если заклинание не будет применяться много раз одновременно, линейный поиск по структурам будет быстрее. В общем, используй то, что тебе больше нравится (мне, например, нравятся структуры :) ).

Советую обратить внимание на эту систему, хоть она расчитана не на заклинания.


 

FaionДата: Четверг, 19 Июля 2012, 14:43:53 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
Лучше структур использовать параллельные массивы + хранить индекс для доступа в хт. Это даст наибольшую производительность из всех.

О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
My Project: Nindogatari
MAL
 

BiboДата: Четверг, 19 Июля 2012, 17:39:49 | Сообщение # 4
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
По скорости хэш-таблица вроде незначительно уступает. Я использовал и то и то, но от структур пришлось отказаться (от чего собсно сильно труднее не стало) так как мою карту открывает человек не имеющий JNPG.
Вообще редко, но бывают моменты когда переменных такая куча, что руки так и чешутся написать структуру.
 

SirNikolasДата: Пятница, 20 Июля 2012, 09:06:11 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Faion)
Лучше структур использовать параллельные массивы
Самописные конструктор и деструктор дадут тот же эффект при более удобном "точечном" синтаксисе.
Code
library_once ctor
    module ctor
        private static integer max = 0
        private static boolean array empty

        static method create takes nothing returns thistype
            local thistype this = 0
            loop
                if this >= max then
                    set max = max + 1
                    call this.ctor_new()
                    exitwhen true
                endif
                exitwhen empty[this]
                set this = this + 1
            endloop
            set empty[this] = false
            return this
        endmethod

        method destroy takes nothing returns nothing
            set empty[this] = true
        endmethod
    endmodule
endlibrary

struct mystruct extends array
    timer t
    unit u

    private method ctor_new takes nothing returns nothing
        set .t = CreateTimer()
    endmethod

    implement ctor
endstruct
Лучшим вариантом, по-моему, является организация стека, как показано здесь. Однако применимо не везде.


 

FaionДата: Пятница, 20 Июля 2012, 11:23:29 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
Quote (SirNikolas)
Самописные конструктор и деструктор дадут тот же эффект при более удобном "точечном" синтаксисе.


Все это полная фигня, особенно учитывая то что это требует более высокий технический уровень и время на написание.


О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
My Project: Nindogatari
MAL
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz