- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
private String getIdString() {
String answer = Integer.toHexString(id.intValue());
switch (answer.length()) {
case 0:
answer = "00000000";
break;
case 1:
answer = "0000000" + answer;
break;
case 2:
answer = "000000" + answer;
break;
case 3:
answer = "00000" + answer;
break;
case 4:
answer = "0000" + answer;
break;
case 5:
answer = "000" + answer;
break;
case 6:
answer = "00" + answer;
break;
case 7:
answer = "0" + answer;
break;
}
return answer;
}
guest 30.04.2010 16:27 # 0
guest 30.04.2010 16:40 # 0
cfdev 30.04.2010 18:45 # 0
guest 30.04.2010 16:44 # +4
mrbig66 30.04.2010 18:58 # +1
Отличная альтернатива блэкджеку и шлюхам.
guest 30.04.2010 18:05 # 0
cfdev 30.04.2010 18:46 # −2
guest 01.05.2010 08:35 # 0
guest 01.05.2010 11:57 # +2
guest 01.05.2010 11:56 # 0
cfdev 01.05.2010 14:20 # 0
на их странице:
'Quick and easy' doesn't mean that a resulting application will suffer from a maintainability or a performance issue. Netty has been designed carefully with the experiences earned from the implementation of a lot of protocols such as FTP, SMTP, HTTP, and various binary and text-based legacy protocols. As a result, Netty has succeeded to find a way to achieve ease of development, performance, stability, and flexibility without a compromise.
Performance
* Better throughput, lower latency
* Less resource consumption
* Minimized unnecessary memory copy
bbk123 08.05.2010 13:19 # 0
cfdev 08.05.2010 18:06 # 0
сабж имеет три действия (toHexString откинем): 1) свитч по длине 2) выделение памяти под строку 3) копирование из двух строк в новую с помощью вызова CharCopy дважды
ваше предложение:
1) выделить объект под стрингбилдер 2) один CharCopy на всю строку (по размеру цикла равно двум CharCopy в прошлом примере) 3) в append: если нужно (а скорей всего нужно), выделить новую строку и 4) в неё CharCopy содержимое предыдущей 5) возможен или вызов SubstringUnchecked, котрый выделяет память и CharCopy, или InternalSetLength, который проходится по всем чарам.
Неужели в яве свитч такой медленный?..
cfdev 08.05.2010 18:16 # 0
соврал, проходится по части.
bbk123 08.05.2010 18:57 # 0
cfdev 08.05.2010 19:00 # 0
Такой вот я весельчак. Честно говоря, всё как в дотнете - так бы я сам реализовал. Именно такие алгоритмы, как там, приходят в голову в первую очередь...
> Анализ Java-вского кода при помощи .Net - это сильно
Вот это сильнее, чем профайлинг явы по дотнету. Не верю!
cfdev 08.05.2010 19:04 # 0
Чото не вижу я стрингбилдеров (jdk6). Или в говнояве оператор+ не мапится на concat?
bbk123 08.05.2010 19:31 # 0
cfdev 08.05.2010 20:05 # 0
Пахнет говнокодом. Я ещё понимаю конкатенация ста строк. Но две?! Почему бы не маппить на Concat? У компилятора есть все средства соптимизировать.
В дотнете, например, для производительности специально перегрузили до 4 аргументов у Concat.
Как будто какому-то индусу было в лом написать пару условий, а потом оно случайно попало в спеки и для обратной совместимости так и осталось...
wvxvw 30.04.2010 22:58 # +1
Что-нибудь в таком духе:
Сорри, не проверял, но уж всяко быстрее должно быть
guest 03.05.2010 14:08 # +1
public final String[] base = {"00000000","0000000","000000","00000"," 0000","000","00","0"};
.....
String answer = Integer.toHexString(id.intValue());
answer = base[answer.length()] + answer;