БЕГЕМОТИКОВ МОЖНО! Войти !bnw Сегодня Клубы
УНЯНЯ. У нас есть немножечко инфы об этом пользователе. Мы знаем, что он понаписал, порекомендовал и даже и то и другое сразу. А ещё у нас есть RSS.
Теги: Клубы:

tfw наговнокодил

"active_connections": -1,
"pending_connections": 0,
"available_connections": 1
#M2SFZN (0) / @hirthwork / 3471 день назад

некоторые юнит-тесты поплыли. потому что редкая программа при корвертировании даты из ноября прошлого года станет учитывать, что в прошлом году таймзона была другая

#EN1BN6 (4) / @hirthwork / 3483 дня назад
``` while (true) { ... } ``` vs. ``` for (;;) { ... } ``` vs. ``` do { ... } while (true); ``` ?
#MZ8ZYF (40) / @hirthwork / 3486 дней назад
tfw в lock free пуле соединений добавляешь потенциально бесконечный цикл
#RBGCSI (0) / @hirthwork / 3487 дней назад
решил ускорить одну функцию. добавил синхронизации, wait()/notify(), запустил бенчмарк. через минуту понял, что никакого ускорения получиться не должно вообще. потом ещё три минуты думал, почему же ускорение случилось
#X01R3P (0) / @hirthwork / 3494 дня назад
Оказывается, в Unsafe в Java8 появилась возможность явно поставить load/store/full memory fence
#7SCF7W (1) / @hirthwork / 3494 дня назад
меня бесит, когда я пишу юнит-тесты выполняющиеся по пять минут
#7SAY8W (13) / @hirthwork / 3494 дня назад
придумал свою реализацию конкурентного lru кэша поверх фабрики. он нихуя не lru на самом деле, нихуя не конкурентный, зато lock free и потокобезопасен. приеду домой — напишу бенчмарк, чтобы сравнить производительность с LoadingCache из guava
#PARPE4 (7) / @hirthwork / 3494 дня назад
взгрустнулось, пушнул небольшое изменение в репу: 69 files changed, 1335 insertions(+), 874 deletions
#9V56BA (0) / @hirthwork / 3497 дней назад
Итак, как оказалось, хэшмапа на связных списках на сишечке пишется просто «на коленке» за 10 минут. При этом: 1. Можно в ноду впихнуть и ключ и значение и на каждую ноду будет выполняться строго одна аллокация 2. Ввиду отсутствия «лишних» действий, работает быстро
#539ZCB (18) / @hirthwork / 3498 дней назад
Продолжаем серию охуительных историй про производительность простейших операций Итак, есть бенчмарк, который просто обходит большой массив и суммирует элементы http://ideone.com/UtpVej Запускаем под последней оракловой jvm: $ /opt/oracle-jdk-bin-1.8.0.20/bin/java Iter 100000000 0 -10621346557024: 43 $ /opt/oracle-jdk-bin-1.8.0.20/bin/java Iter 100000000 1 -10621346557024: 42 $ /opt/oracle-jdk-bin-1.8.0.20/bin/java Iter 100000000 2 -10621346557024: 48 Казалось бы логично — обход массиве в обратном направлении не cache-friendy Запускаем под айбиэмовской машиной: $ /opt/ibm/java-x86_64-71/bin/java Iter 100000000 0 -10621346557024: 107 $ /opt/ibm/java-x86_64-71/bin/java Iter 100000000 1 -10621346557024: 98 $ /opt/ibm/java-x86_64-71/bin/java Iter 100000000 2 -10621346557024: 90 Если отбросить тот факт, что работает медленно, можно отметить, что реализация обратного обхода и должна была работать быстрее, потому что в байткоде видно, что размер массива загружается всего один раз, а в реализации с прямым циклом по массиву его приходится получать каждый раз. В общем, я продолжаю охуевать от айбиэмовских jvm и продолжаю их использовать в силу более быстрого gc
#VK33HN (8) / @hirthwork / 3503 дня назад
хвала утилите checkstyle и позор криворуким долбоёбам (мне). написал в коде: ```java if (cancelled) { throw new CancellationException(); } if (exception == null) { return result; } ``` Видите ошибку? А я вот в двенадцатом часу ночи не увидел: `EnterpriseShit.java:60: if at indentation level 10 not at correct indentation, 8`
#S7GBT7 (2) / @hirthwork / 3508 дней назад
специально для @lord: http://ideone.com/qG6C2N tl;dr: стандартная работа со временем в go такая же медленная как в джаве, а joda-time — рулит
#VCCSPV (11+1) / @hirthwork / 3508 дней назад
Понадобилось мне из секунд с начала эпохи™ получать год и месяц. Итерация №0: Берём java.util.Calendar, делаем .setTimeMillis(...), делаем .get(Calendar.YEAR) и .get(Calendar.MONTH) (не забываем месяц на единицу увеличивать) Исследование №1: Запускаем под JProfiler, видим, что 16.3% времени занимает извлечение даты. Печалимся. Итерация №1: Видим, что в папке lib/ проекта уже лежит joda-time-2.0.jar. Делаем date = new DateTime(millis) и .get(DateTimeFieldType.year()) и .get(DateTimeFieldType.month()). Исследование №2: Запускаем под JProfiler, видим, что извлечение даты занимает уже 12.7%. «И увидел Бог, что это хорошо». Исследование №3: Хочется понять насколько реально быстрее работает joda-time: 1. Качаем joda-time-2.4 2. Пишем небольшой бенчмарк. 3. Запускаем 10kk итераций. Видим, что Calendar выполняет их за 789 мс, а joda-time — за 1126 мс. 4. Охуеваем 5. Чешем репу 6. Копируем из папки проекта joda-time-2.0.jar и запускаем с ним. Результат — 458 мс. Исследование №4: 1. Качаем бету Java 8 от IBM 2. Дописываем бенчмарк, который делает LocalDateTime.ofInstant(Instant.ofEpochMilli(millis), id).getYear() 3. Запускаем — 960 мс. Т.е. уже лучше Calendar, но всё ещё хуже joda-time-2.0. Выводы: Новое — не значит лучшее. Хочешь реально быстрого извлечения времени — создавай один объект MutableDateTime из joda-time и будет тебе счастье. Для истории, код бенчмарка: ```java import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.temporal.ChronoField; import java.util.Calendar; import org.joda.time.DateTimeFieldType; import org.joda.time.DateTime; import org.joda.time.MutableDateTime; interface MillisToYear { int year(long millis); } class CalendarMillisToYear implements MillisToYear { private final Calendar cal = Calendar.getInstance(); @Override public int year(final long millis) { cal.setTimeInMillis(millis); return cal.get(Calendar.YEAR); } } class JodaMillisToYear implements MillisToYear { private final DateTimeFieldType year = DateTimeFieldType.year(); @Override public int year(final long millis) { return new DateTime(millis).get(year); } } class MutableJodaMillisToYear implements MillisToYear { private final DateTimeFieldType year = DateTimeFieldType.year(); private final MutableDateTime date = new MutableDateTime(); @Override public int year(final long millis) { date.setMillis(millis); return date.get(year); } } class Java8MillisToYear implements MillisToYear { private final ZoneId id = ZoneId.of("Europe/Moscow"); @Override public int year(final long millis) { return LocalDateTime.ofInstant(Instant.ofEpochMilli(millis), id) .getYear(); } } public class Main { public static void main(final String... args) { MillisToYear mty; switch (Integer.parseInt(args[0])) { case 0: mty = new CalendarMillisToYear(); break; case 1: mty = new JodaMillisToYear(); break; case 2: mty = new MutableJodaMillisToYear(); break; case 3: mty = new Java8MillisToYear(); break; default: throw new RuntimeException(); } long now = System.currentTimeMillis() / 86400000L * 86400000L; for (long i = 0; i < 1000000; ++i) { mty.year(now + i); } long start = System.currentTimeMillis(); long chksum = 0L; for (long i = 0L; i < 10000000000L; i += 1000L) { chksum += mty.year(now + i); } long total = (System.currentTimeMillis() - start); System.out.println("Total time: " + total); System.out.println("Checksum: " + chksum); } } ```
#N6DAAM (7) / @hirthwork / 3509 дней назад
написал вчера новый функционал. подумал что выглядит недостаточно гармонично. и точно — при написании ещё одной ручки в коде обнаружил, что она целиком заменит вчерашний костыль
#5HEL0X (1) / @hirthwork / 3515 дней назад
хётворк тупил в монитор, нервно кусал губы и ждал её — восьмую jvm от IBM
#HOA86U (2) / @hirthwork / 3517 дней назад
это чувство, когда обнаруживаешь, что твои демоны на разных серверах сами между собой договорились и начали по сети вместо плэйнтекста слать гзипованные данные
#T5E8NN (3+1) / @hirthwork / 3521 день назад
Год назад меня доебал ant и я написал свою билд систему на базе мэйка. Сейчас меня уже доебала моя билд-система и я хочу написать новую билд-систему на джаве с бутстрапом на make. Я знаю что я хуй и противен себе. Такие дела
#EL3YH4 (9) / @hirthwork / 3530 дней назад

Находишь в гугле страницу «Significant improvements to the Ford-Johnson algorithm for sorting». Открываешь — предлагают скачать статью за $45. Да том Кнута дешевле стоит! Кляты москали.

#X2IUYZ (0) / @hirthwork / 3536 дней назад

больше велосипедов для бога велосипедов!

#5VTA11 (0) / @hirthwork / 3551 день назад
--
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.