1. Java / Говнокод #4382

    +75

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    StringUtils.join(
                    Collections2.transform(Arrays.asList(ArrayUtils.toObject(data)),
                            new Function<Byte, String>() {
    
                                @Override
                                public String apply(final Byte from) {
                                    return "0x" + Integer.toHexString(from);
                                }
                            }), " ")

    data имеет тип byte[]

    в питоне это было бы ' '.join(map(hex, data))

    Запостил: burdakovd, 18 Октября 2010

    Комментарии (7) RSS

    • >в питоне это было бы ' '.join(map(hex, data))
      и работало бы в 20 раз дольше
      Ответить
      • Ну тут я бы поспорил.

        Небольшое сравнение показывает, что этот код на Java для массива в 1000000 байт работает 900мс.
        http://pastie.org/1229796

        ' '.join(map(hex, data)) работает 200мс.
        http://pastie.org/1229781

        То есть код на питоне даже быстрее.
        Ответить
        • Итеративный код с использованием StringBuilder даёт 300мс, что ближе, но всё равно дольше питона:

          final StringBuilder builder = new StringBuilder();
          
                  for (int i = 0; i < data.length; ++i) {
                      if (i != 0) {
                          builder.append(' ');
                      }
                      builder.append("0x");
                      builder.append(Integer.toHexString(0xff & data[i]));
                  }
          
                  return builder.toString();


          Так что не надо тут питон обижать=)
          Ответить
    • КЭП, на что ты намекаешь?
      Ответить
    • что такое Collections2?
      Ответить
    • как же ето все печально :(
      Ответить

    Добавить комментарий