Core - Страница 3 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Игровой клиент

Игровой клиент Есть вопросы по поводу редактирования dat, utx и других файлов клиента, пожалуйста, задавайте их здесь.

Ответ
Опции темы
Непрочитано 26.03.2014, 18:43   #21
Аватар для JavaMan

По умолчанию Re: Core

Цитата:
Сообщение от lin Посмотреть сообщение
"HashMap" проиграет "ConcurrentHashMap" - так как будет эффективнее с большим количеством хранимых данных и операций доступа к ним.
Нет. ConcurrentHashMap ни при каких обстоятельствах не будет быстрее HashMap. Вообще никак.
JavaMan вне форума Ответить с цитированием
Непрочитано 26.03.2014, 18:54   #22
Аватар для n3k0nation
Antihero

По умолчанию Re: Core

Цитата:
Сообщение от lin Посмотреть сообщение
Пардон
Я думал вы про другое, а вы дали исходы с SDK.
На сколько я понял, автор имел ввиду "ConcurrentHashMap или CopyOnWriteArrayList" и грузить конфиги в один объект, без нагрузки с Properties, так как в нем используются устаревшие расширения коллекций "Hashtable" которые синхронизируются по этому производительность уменьшается, так как в данной области будут одновременные обращения.
В многопоточности "Hashtable" проиграет в скорости и производительности в целом.
"HashMap" проиграет "ConcurrentHashMap" - так как будет эффективнее с большим количеством хранимых данных и операций доступа к ним.
Ну в 8й версии они неплохо так подпилили HashMap, поэтому скорость работы при больших коллекциях сильно увеличилась, по сравнению с 7й джавой. Плюс у нас теперь есть parallelStream
Hashtable не только из-за синхронизации такой тормознутый, он еще и сортирует все элементы корейским способом.

abstract:
Свернуть ↑Развернуть ↓


Добавлено через 1 минуту
Цитата:
Сообщение от GabberBaby Посмотреть сообщение
Нет. ConcurrentHashMap ни при каких обстоятельствах не будет быстрее HashMap. Вообще никак.
Раньше таки был быстрее. В 8й не знаю, надо делать микро-бенчмарки, да и то, они не показатель на лайве.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.

Последний раз редактировалось n3k0nation; 26.03.2014 в 18:57. Причина: Добавлено сообщение
n3k0nation вне форума Ответить с цитированием
Непрочитано 26.03.2014, 19:06   #23
Изгнанные

По умолчанию Re: Core

Цитата:
Сообщение от GabberBaby Посмотреть сообщение
Нет. ConcurrentHashMap ни при каких обстоятельствах не будет быстрее HashMap. Вообще никак.
Ошибаетесь, а как же "параллелизм", к тому же ее сейчас еще с большим уклоном сделали под параллельные приложения и даже рекомендовано сейчас использовать именно "ConcurentHashMap" для более высокой производительности.

Добавлено через 4 минуты
Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
abstract:
Свернуть ↑Развернуть ↓
Хорошая идея...
Ну черкани, если что будет)
Интересно так-то.

Последний раз редактировалось lin; 26.03.2014 в 19:10. Причина: Добавлено сообщение
lin вне форума Ответить с цитированием
Непрочитано 26.03.2014, 19:22   #24
Аватар для JavaMan

По умолчанию Re: Core

Цитата:
Сообщение от lin Посмотреть сообщение
Ошибаетесь, а как же "параллелизм", к тому же ее сейчас еще с большим уклоном сделали под параллельные приложения и даже рекомендовано сейчас использовать именно "ConcurentHashMap" для более высокой производительности.
Ты серьезно ? Параллелить взятие ОДНОГО элемента с мапы ? Ну ок, куда мне до таких гениев. Я же обычный говнарь, который ничего не смыслит в явке.

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
Раньше таки был быстрее. В 8й не знаю, надо делать микро-бенчмарки, да и то, они не показатель на лайве.
Ты смотрел очень херовые бенчмарки. В хэшмапе просто по хэшу вытаскивается значение. В конкуррентХэшМапе полюбому есть хоть и маленькая, но блокировка при гете, и пускай хотспот хоть обосрется не сможет он сделать перфоманс этих мап одинаковыми.
JavaMan вне форума Ответить с цитированием
Непрочитано 26.03.2014, 19:32   #25
Аватар для n3k0nation
Antihero

По умолчанию Re: Core

Цитата:
Сообщение от GabberBaby Посмотреть сообщение
Ты серьезно ? Параллелить взятие ОДНОГО элемента с мапы ? Ну ок, куда мне до таких гениев. Я же обычный говнарь, который ничего не смыслит в явке.
Что мешает использовать parallelStream для одного гета? Не Erlang конечно, но все же.


Цитата:
Сообщение от GabberBaby Посмотреть сообщение
Ты смотрел очень херовые бенчмарки. В хэшмапе просто по хэшу вытаскивается значение. В конкуррентХэшМапе полюбому есть хоть и маленькая, но блокировка при гете, и пускай хотспот хоть обосрется не сможет он сделать перфоманс этих мап одинаковыми.
Я не имею привычку верить на слово бенчам. Частенько я их сам пишу. Из-за кривоты получения хеша в HashMap, она залипала на больших коллекциях, в отличие, от ее конкурентной версии. Плюс можешь посмотреть сорц конкурентной версии, она основана на CAS, что будет быстрее таки, чем гетинг значения из обычной HashMap в многопоточной среде (тем более с syncronized)
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Непрочитано 26.03.2014, 20:06   #26
Аватар для JavaMan

По умолчанию Re: Core

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
Что мешает использовать parallelStream для одного гета? Не Erlang конечно, но все же.
Хотя бы то, что создание стрима создаст больший оверхед, чем прямой вызов гета.

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
Я не имею привычку верить на слово бенчам. Частенько я их сам пишу. Из-за кривоты получения хеша в HashMap, она залипала на больших коллекциях, в отличие, от ее конкурентной версии. Плюс можешь посмотреть сорц конкурентной версии, она основана на CAS, что будет быстрее таки, чем гетинг значения из обычной HashMap в многопоточной среде (тем более с syncronized)
Если заполнять хэшмапу только при старте программы, а потом только дергать из нее, то никакая синхронизация не нужна будет. Также в явке 7 апдейт 40 получение хэша в хэшмапе и конкуррентхэшмапе почти ничем не отличается. Возможно в более старых версиях коллизии действительно очень сильно портили производительность мапы, но к серверам л2 это уже не имеет никакого отношения.
JavaMan вне форума Ответить с цитированием
Непрочитано 27.03.2014, 09:34   #27
Изгнанные

По умолчанию Re: Core

Мне вот что пришло в голову, что-то как-то так делать, на сколько это будет эффективно я не знаю...
config.properties:
PHP код:
#Config types:
boolean-BOOL=false
string
-STR=Name 
PHP код:
public class Config<Type> {
    
    private static 
Map<StringObjectconfig = new ConcurrentHashMap<>();
    private static 
String file "C:\\config.properties";
    
    public static 
void main(String[] argsthrows IOException {
        final 
Properties load = new Properties();
        
load.load(new FileInputStream(Config.file));
        for (final 
Entry<ObjectObjectentry load.entrySet()) {
            final 
String[] str = ((String) entry.getKey()).split("-");
            if (
== str.length) {
                switch (
str[0]) {
                    case 
"string":
                        
Config.config.put(str[1], String.valueOf(entry.getValue()));
                        break;
                    case 
"boolean":
                        
Config.config.put(str[1], Boolean.parseBoolean(String.valueOf(entry.getValue())));
                        break;
                }
            }
        }
        
//Вывод:
        
System.out.println(Config.get("STR")); // String - Name
        
System.out.println(Config.get("BOOL")); // Boolean - false
    
}
    
    public static <
TypeType get(final String key) {
        return (
TypeConfig.config.get(key);
    }

Но было бы очень удобно...
PHP код:
if("Name".equals(Config.get("STR"))) {
    
System.out.println(Config.get("STR")); // Name
}
if(
Config.get("BOOL")) {
    
System.out.println(Config.get("BOOL")); // true

lin вне форума Ответить с цитированием
Непрочитано 27.03.2014, 09:47   #28
Аватар для Cywka!
Пользователь

По умолчанию Re: Core

По теме, <settings exitOnDeath="true" buffRepeat="true" affected="playable"/> параметры зоны
<skill applyEnter="4243,1" removeExit="4243"/> ну и наш баф, который снимает hp.
Cywka! вне форума Отправить сообщение для Cywka! с помощью ICQ Отправить сообщение для Cywka! с помощью Skype™ Ответить с цитированием
Непрочитано 27.03.2014, 10:00   #29
Изгнанные

По умолчанию Re: Core

Цитата:
Сообщение от Cywka! Посмотреть сообщение
По теме, <settings exitOnDeath="true" buffRepeat="true" affected="playable"/> параметры зоны
<skill applyEnter="4243,1" removeExit="4243"/> ну и наш баф, который снимает hp.
Где вы это на interlude видели?
lin вне форума Ответить с цитированием
Непрочитано 27.03.2014, 13:26   #30
Аватар для n3k0nation
Antihero

По умолчанию Re: Core

Цитата:
Сообщение от lin Посмотреть сообщение
Мне вот что пришло в голову, что-то как-то так делать, на сколько это будет эффективно я не знаю...
config.properties:
PHP код:
#Config types:
boolean-BOOL=false
string
-STR=Name 
PHP код:
public class Config<Type> {
    
    private static 
Map<StringObjectconfig = new ConcurrentHashMap<>();
    private static 
String file "C:\\config.properties";
    
    public static 
void main(String[] argsthrows IOException {
        final 
Properties load = new Properties();
        
load.load(new FileInputStream(Config.file));
        for (final 
Entry<ObjectObjectentry load.entrySet()) {
            final 
String[] str = ((String) entry.getKey()).split("-");
            if (
== str.length) {
                switch (
str[0]) {
                    case 
"string":
                        
Config.config.put(str[1], String.valueOf(entry.getValue()));
                        break;
                    case 
"boolean":
                        
Config.config.put(str[1], Boolean.parseBoolean(String.valueOf(entry.getValue())));
                        break;
                }
            }
        }
        
//Вывод:
        
System.out.println(Config.get("STR")); // String - Name
        
System.out.println(Config.get("BOOL")); // Boolean - false
    
}
    
    public static <
TypeType get(final String key) {
        return (
TypeConfig.config.get(key);
    }

Но было бы очень удобно...
PHP код:
if("Name".equals(Config.get("STR"))) {
    
System.out.println(Config.get("STR")); // Name
}
if(
Config.get("BOOL")) {
    
System.out.println(Config.get("BOOL")); // true

Как по мне, удобнее сканить класс и сразу уже смотреть по типу поля, во что конвертить стринговое значение.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32 PuShKinG Документация 199 30.10.2019 10:18
unmetered выделенные серверы от $50, VPS от $7.50, оффшорные VPS от $9 MultiServers Рынок / Marketplace 0 11.10.2013 13:40
Требуется программер Java Core Developer на частиную основу niko42 Рынок / Marketplace 12 21.05.2011 23:24
Java Core Developer на интересную работу. Bugsoft Рынок / Marketplace 0 26.03.2011 09:28


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 13:14. Часовой пояс GMT +3.

Вверх