Страница 7 из 9 ПерваяПервая ... 56789 ПоследняяПоследняя
Показано с 61 по 70 из 82

Тема: АСУ ТП в облаке — быстрая разработка проектов

  1. #61

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    найдите
    "Но я не умею в вольтметр, смотри, у меня есть лампочка"

    Вот код. Я специально закомментировал всё лишнее, чтобы можно было тестировать отдельно.
    И добавил цикл. Мы же программу не ради однократного запуска ускоряем?

    Код:
    public class MyTest {
      public static void main(String[] args) {
        new MyTest();
      }
    
      public MyTest() {
        for(int i=0; i<100; i++) {
        long time = System.currentTimeMillis();
    //    try {
    //      strTestD(new StringBuilder());
    //    } catch (Exception e) {}
        try {
          strTestU(new StringBuffer());
        } catch (Exception e) {}
    //    strTestQ(new StringBuilder());
    //    strTestT(new StringBuffer());
    //    strTestS();
    //    strTestV();
        time = System.currentTimeMillis() - time;
        System.out.println(i + ", StringBuffer = " + time);
        }
      }
      private void strTestU(Appendable obj) throws IOException {
        for (int i = 0; i < 1E7; i++) {
          obj.append("Irbis");
        }
        System.out.println("StringBuffer "+obj.toString().length());
      }
      private void strTestD(Appendable obj) throws IOException{
        for (int i = 0; i < 1E7; i++) {
          obj.append("Irbis");
        }
        System.out.println("StringBuilder "+obj.toString().length());
      }
      private void strTestT(StringBuffer obj) {
        for (int i = 0; i < 1E7; i++) {
          obj.append("Irbis");
        }
        System.out.println("StringBuffer "+obj.toString().length());
      }
      private void strTestQ(StringBuilder obj) {
        for (int i = 0; i < 1E7; i++) {
          obj.append("Irbis");
        }
        System.out.println("StringBuilder "+obj.toString().length());
      }
      private void strTestV() {
        StringBuffer obj = new StringBuffer();
        for (int i = 0; i < 1E7; i++) {
          obj.append("Irbis");
        }
        System.out.println("StringBuffer "+obj.toString().length());
      }
      private void strTestS() {
        StringBuilder obj = new StringBuilder();
        for (int i = 0; i < 1E7; i++) {
          obj.append("Irbis");
        }
        System.out.println("StringBuilder "+obj.toString().length());
      }
    }
    Вот результаты у меня:
    Код:
    StringBuffer 50000000
    0, time = 680
    StringBuffer 50000000
    1, time = 1064
    StringBuffer 50000000
    2, time = 774
    StringBuffer 50000000
    3, time = 622
    StringBuffer 50000000
    4, time = 529
    StringBuffer 50000000
    5, time = 391
    StringBuffer 50000000
    6, time = 241
    StringBuffer 50000000
    7, time = 491
    StringBuffer 50000000
    8, time = 228
    StringBuffer 50000000
    9, time = 183
    StringBuffer 50000000
    10, time = 238
    StringBuffer 50000000
    11, time = 135
    StringBuffer 50000000
    12, time = 215
    StringBuffer 50000000
    13, time = 217
    StringBuffer 50000000
    14, time = 190
    StringBuffer 50000000
    15, time = 232
    StringBuffer 50000000
    16, time = 241
    StringBuffer 50000000
    17, time = 142
    StringBuffer 50000000
    18, time = 228
    StringBuffer 50000000
    Вот результаты для builder'а

    Код:
    StringBuilder 50000000
    0, StringBuilder = 413
    StringBuilder 50000000
    1, StringBuilder = 429
    StringBuilder 50000000
    2, StringBuilder = 437
    StringBuilder 50000000
    3, StringBuilder = 361
    StringBuilder 50000000
    4, StringBuilder = 277
    StringBuilder 50000000
    5, StringBuilder = 243
    StringBuilder 50000000
    6, StringBuilder = 224
    StringBuilder 50000000
    7, StringBuilder = 472
    StringBuilder 50000000
    8, StringBuilder = 238
    StringBuilder 50000000
    9, StringBuilder = 187
    StringBuilder 50000000
    10, StringBuilder = 338
    StringBuilder 50000000
    11, StringBuilder = 131
    StringBuilder 50000000
    12, StringBuilder = 133
    StringBuilder 50000000
    13, StringBuilder = 143
    StringBuilder 50000000
    14, StringBuilder = 131
    StringBuilder 50000000
    15, StringBuilder = 186
    StringBuilder 50000000
    16, StringBuilder = 210
    StringBuilder 50000000
    17, StringBuilder = 155
    StringBuilder 50000000
    18, StringBuilder = 154
    StringBuilder 50000000
    19, StringBuilder = 263
    StringBuilder 50000000
    20, StringBuilder = 175
    StringBuilder 50000000
    21, StringBuilder = 160
    StringBuilder 50000000
    22, StringBuilder = 151
    StringBuilder 50000000
    23, StringBuilder = 167
    StringBuilder 50000000
    24, StringBuilder = 166
    StringBuilder 50000000
    25, StringBuilder = 159
    Во первых, первые выполнения работают медленнее, чем последующие.

    Во-вторых, результаты сильно завязаны на работу garbage collector'а. Ещё бы. Тут создаётся строка на 100 мегабайт и тут же выбрасывается.
    Если добавить -verbose:gc, то сразу видно, что в начале работы JVM наращивает память (число в скобках растёт):

    -verbose:gc
    Код:
    StringBuffer 50000000
    0, StringBuilder = 511
    [GC (Allocation Failure)  416330K->365519K(497152K), 0.0094296 secs]
    StringBuffer 50000000
    1, StringBuilder = 601
    [GC (Allocation Failure)  749030K->679696K(882688K), 0.0055799 secs]
    StringBuffer 50000000
    2, StringBuilder = 729
    [GC (Allocation Failure)  1101541K->1012296K(1202688K), 0.0132236 secs]
    StringBuffer 50000000
    3, StringBuilder = 459
    [GC (Allocation Failure)  1386750K->1266657K(1579520K), 0.0077790 secs]
    StringBuffer 50000000
    4, StringBuilder = 475
    [GC (Allocation Failure)  1659860K->1414081K(1727488K), 0.0096428 secs]
    StringBuffer 50000000
    5, StringBuilder = 423
    [GC (Allocation Failure)  1807284K->1561569K(2141184K), 0.0084224 secs]
    А если сразу выделить нужное количество памяти, то тест "разгоняется" гораздо бодрее:

    -verbose:gc -Xms2g -Xmx2g
    Код:
    StringBuffer 50000000
    0, StringBuilder = 459
    [GC (Allocation Failure)  501368K->37511K(2010112K), 0.0235897 secs]
    StringBuffer 50000000
    1, StringBuilder = 484
    [GC (Allocation Failure)  504648K->74336K(2010112K), 0.0412089 secs]
    StringBuffer 50000000
    2, StringBuilder = 344
    [GC (Allocation Failure)  476581K->74288K(2010112K), 0.0269566 secs]
    StringBuffer 50000000
    3, StringBuilder = 348
    [GC (Allocation Failure)  467187K->74368K(2010112K), 0.0090283 secs]
    StringBuffer 50000000
    4, StringBuilder = 310
    [GC (Allocation Failure)  467553K->74336K(1997824K), 0.0092012 secs]
    StringBuffer 50000000
    5, StringBuilder = 340
    [GC (Allocation Failure)  467747K->74344K(2001920K), 0.0123743 secs]
    StringBuffer 50000000
    6, StringBuilder = 330
    [GC (Allocation Failure)  467572K->74254K(2001408K), 0.0167865 secs]
    О чём это я?

    О том, что конкретным замером вы измеряете не скорость StringBuilder, а:
    1) "Время однократного запуска". Тут вообще просто свет тушить можно. Даже от простого перезапуска (или от перестановки порядка вызовов) диспозиция может измениться.
    2) Работу garbage collector'а (и эргономик по автоматической настройке памяти, ведь, вы не указывали -Xms/-Xmx?)
    3) Работу on-stack-replacement. Известно (из многочисленных экспериментов, и из того, что пишут сами авторы), что OSR генерирует менее эффективный машинный код.
    4) Работу непонятного кода. Необходимость построить 10 мегабайтную строку и тут же её выбросить у вас часто возникала? Я не говорю, что именно такой тест замерять нельзя. Я просто говорю, что изначально тема развилась из "buffer капец как тормозной".

    1, 2 и 3 устраняются, если использовать jmh. Вы специально упираетесь, и не используете jmh?
    Последний раз редактировалось Владимир Ситников; 29.01.2016 в 16:20. Причина: "Мы же не программу не ради однократного запуска" -> "Мы же программу не ради однократного запуска"

  2. #62

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    вот есть авторитетный замерщик ему можно верить
    Опять перевираете.
    Полностью звучит так: вот есть способ проверить.

    Ну, давайте, я проверю. Вам от этого легче станет?
    Вот если вы запустите нормальный jmh тест, а не то убожество с однократным запуском, то это уже другое дело. Может, глаза откроются.

    Расчехляем jmh, и получаем, что скорость выполнения одна и та же.

    Код:
    import org.openjdk.jmh.annotations.Benchmark;
    import org.openjdk.jmh.annotations.BenchmarkMode;
    import org.openjdk.jmh.annotations.Fork;
    import org.openjdk.jmh.annotations.Measurement;
    import org.openjdk.jmh.annotations.Mode;
    import org.openjdk.jmh.annotations.OutputTimeUnit;
    import org.openjdk.jmh.annotations.Scope;
    import org.openjdk.jmh.annotations.State;
    import org.openjdk.jmh.annotations.Threads;
    import org.openjdk.jmh.annotations.Warmup;
    import org.openjdk.jmh.runner.Runner;
    import org.openjdk.jmh.runner.RunnerException;
    import org.openjdk.jmh.runner.options.Options;
    import org.openjdk.jmh.runner.options.OptionsBuilder;
    
    import java.util.concurrent.TimeUnit;
    
    @Fork(value = 3, jvmArgsPrepend = {"-Xms2g", "-Xmx2g"})
    @Measurement(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
    @Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
    @State(Scope.Thread)
    @Threads(1)
    @BenchmarkMode(Mode.AverageTime)
    @OutputTimeUnit(TimeUnit.MILLISECONDS)
    public class StringConcat {
    
      @Benchmark
      public String builder() {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 1e7; i++) {
          sb.append("Irbis");
        }
        return sb.toString();
      }
    
      @Benchmark
      public String buffer() {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < 1e7; i++) {
          sb.append("Irbis");
        }
        return sb.toString();
      }
    
      public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
            .include(StringConcat.class.getSimpleName())
            //.addProfiler(GCProfiler.class)
            .detectJvmArgs()
            .build();
    
        new Runner(opt).run();
      }
    
    }

    Код:
    # JMH 1.11.2 (released 92 days ago, please consider updating!)
    # VM version: JDK 1.8.0_60, VM 25.60-b23
    # VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/bin/java
    # VM options: -Xms2g -Xmx2g -Didea.launcher.port=7532 -Didea.launcher.bin.path=/Applications/IntelliJ IDEA 15.app/Contents/bin -Dfile.encoding=UTF-8
    # Warmup: 10 iterations, 1 s each
    # Measurement: 10 iterations, 1 s each
    # Timeout: 10 min per iteration
    # Threads: 1 thread, will synchronize iterations
    # Benchmark mode: Average time, time/op
    # Benchmark: org.postgresql.util.StringConcat.buffer
    
    # Run progress: 0,00% complete, ETA 00:02:00
    # Fork: 1 of 3
    # Warmup Iteration   1: 504,478 ms/op
    # Warmup Iteration   2: 167,282 ms/op
    # Warmup Iteration   3: 156,712 ms/op
    # Warmup Iteration   4: 142,019 ms/op
    # Warmup Iteration   5: 130,716 ms/op
    # Warmup Iteration   6: 132,175 ms/op
    # Warmup Iteration   7: 130,494 ms/op
    # Warmup Iteration   8: 128,751 ms/op
    # Warmup Iteration   9: 128,376 ms/op
    # Warmup Iteration  10: 135,927 ms/op
    Iteration   1: 142,503 ms/op
    Iteration   2: 126,427 ms/op
    Iteration   3: 121,183 ms/op
    Iteration   4: 123,705 ms/op
    Iteration   5: 134,235 ms/op
    Iteration   6: 122,471 ms/op
    Iteration   7: 124,813 ms/op
    Iteration   8: 127,109 ms/op
    Iteration   9: 122,452 ms/op
    Iteration  10: 128,862 ms/op
    
    # Run progress: 16,67% complete, ETA 00:01:50
    # Fork: 2 of 3
    # Warmup Iteration   1: 290,340 ms/op
    # Warmup Iteration   2: 133,337 ms/op
    # Warmup Iteration   3: 123,226 ms/op
    # Warmup Iteration   4: 131,857 ms/op
    # Warmup Iteration   5: 128,725 ms/op
    # Warmup Iteration   6: 129,772 ms/op
    # Warmup Iteration   7: 123,170 ms/op
    # Warmup Iteration   8: 122,863 ms/op
    # Warmup Iteration   9: 129,920 ms/op
    # Warmup Iteration  10: 120,862 ms/op
    Iteration   1: 122,446 ms/op
    Iteration   2: 124,428 ms/op
    Iteration   3: 133,191 ms/op
    Iteration   4: 119,475 ms/op
    Iteration   5: 126,896 ms/op
    Iteration   6: 123,963 ms/op
    Iteration   7: 134,483 ms/op
    Iteration   8: 133,446 ms/op
    Iteration   9: 127,896 ms/op
    Iteration  10: 125,156 ms/op
    
    # Run progress: 33,33% complete, ETA 00:01:28
    # Fork: 3 of 3
    # Warmup Iteration   1: 285,805 ms/op
    # Warmup Iteration   2: 130,223 ms/op
    # Warmup Iteration   3: 122,691 ms/op
    # Warmup Iteration   4: 132,281 ms/op
    # Warmup Iteration   5: 130,149 ms/op
    # Warmup Iteration   6: 129,617 ms/op
    # Warmup Iteration   7: 125,146 ms/op
    # Warmup Iteration   8: 125,089 ms/op
    # Warmup Iteration   9: 133,226 ms/op
    # Warmup Iteration  10: 125,234 ms/op
    Iteration   1: 119,962 ms/op
    Iteration   2: 126,932 ms/op
    Iteration   3: 132,335 ms/op
    Iteration   4: 131,525 ms/op
    Iteration   5: 127,541 ms/op
    Iteration   6: 121,408 ms/op
    Iteration   7: 119,892 ms/op
    Iteration   8: 139,716 ms/op
    Iteration   9: 121,877 ms/op
    Iteration  10: 125,758 ms/op
    
    
    Result "buffer":
      127,070 ±(99.9%) 3,904 ms/op [Average]
      (min, avg, max) = (119,475, 127,070, 142,503), stdev = 5,844
      CI (99.9%): [123,165, 130,974] (assumes normal distribution)
    
    
    # JMH 1.11.2 (released 92 days ago, please consider updating!)
    # VM version: JDK 1.8.0_60, VM 25.60-b23
    # VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/bin/java
    # VM options: -Xms2g -Xmx2g -Didea.launcher.port=7532 -Didea.launcher.bin.path=/Applications/IntelliJ IDEA 15.app/Contents/bin -Dfile.encoding=UTF-8
    # Warmup: 10 iterations, 1 s each
    # Measurement: 10 iterations, 1 s each
    # Timeout: 10 min per iteration
    # Threads: 1 thread, will synchronize iterations
    # Benchmark mode: Average time, time/op
    # Benchmark: org.postgresql.util.StringConcat.builder
    
    # Run progress: 50,00% complete, ETA 00:01:06
    # Fork: 1 of 3
    # Warmup Iteration   1: 177,462 ms/op
    # Warmup Iteration   2: 127,427 ms/op
    # Warmup Iteration   3: 116,823 ms/op
    # Warmup Iteration   4: 128,042 ms/op
    # Warmup Iteration   5: 126,923 ms/op
    # Warmup Iteration   6: 123,174 ms/op
    # Warmup Iteration   7: 125,599 ms/op
    # Warmup Iteration   8: 127,271 ms/op
    # Warmup Iteration   9: 128,333 ms/op
    # Warmup Iteration  10: 114,842 ms/op
    Iteration   1: 128,124 ms/op
    Iteration   2: 117,573 ms/op
    Iteration   3: 126,854 ms/op
    Iteration   4: 127,813 ms/op
    Iteration   5: 116,706 ms/op
    Iteration   6: 120,092 ms/op
    Iteration   7: 122,443 ms/op
    Iteration   8: 124,191 ms/op
    Iteration   9: 125,831 ms/op
    Iteration  10: 121,483 ms/op
    
    # Run progress: 66,67% complete, ETA 00:00:44
    # Fork: 2 of 3
    # Warmup Iteration   1: 175,898 ms/op
    # Warmup Iteration   2: 129,208 ms/op
    # Warmup Iteration   3: 125,624 ms/op
    # Warmup Iteration   4: 117,651 ms/op
    # Warmup Iteration   5: 129,693 ms/op
    # Warmup Iteration   6: 122,625 ms/op
    # Warmup Iteration   7: 117,697 ms/op
    # Warmup Iteration   8: 118,748 ms/op
    # Warmup Iteration   9: 129,949 ms/op
    # Warmup Iteration  10: 129,812 ms/op
    Iteration   1: 122,881 ms/op
    Iteration   2: 120,961 ms/op
    Iteration   3: 116,294 ms/op
    Iteration   4: 129,627 ms/op
    Iteration   5: 122,964 ms/op
    Iteration   6: 117,850 ms/op
    Iteration   7: 124,518 ms/op
    Iteration   8: 169,902 ms/op
    Iteration   9: 124,100 ms/op
    Iteration  10: 124,082 ms/op
    
    # Run progress: 83,33% complete, ETA 00:00:22
    # Fork: 3 of 3
    # Warmup Iteration   1: 178,994 ms/op
    # Warmup Iteration   2: 129,012 ms/op
    # Warmup Iteration   3: 133,074 ms/op
    # Warmup Iteration   4: 123,572 ms/op
    # Warmup Iteration   5: 137,259 ms/op
    # Warmup Iteration   6: 125,592 ms/op
    # Warmup Iteration   7: 125,917 ms/op
    # Warmup Iteration   8: 125,565 ms/op
    # Warmup Iteration   9: 134,758 ms/op
    # Warmup Iteration  10: 123,280 ms/op
    Iteration   1: 121,962 ms/op
    Iteration   2: 121,457 ms/op
    Iteration   3: 129,659 ms/op
    Iteration   4: 136,555 ms/op
    Iteration   5: 130,896 ms/op
    Iteration   6: 136,405 ms/op
    Iteration   7: 128,355 ms/op
    Iteration   8: 138,604 ms/op
    Iteration   9: 130,620 ms/op
    Iteration  10: 126,581 ms/op
    
    
    Result "builder":
      126,846 ±(99.9%) 6,624 ms/op [Average]
      (min, avg, max) = (116,294, 126,846, 169,902), stdev = 9,915
      CI (99.9%): [120,222, 133,470] (assumes normal distribution)
    Код:
    # Run complete. Total time: 00:02:12
    
    Benchmark             Mode  Cnt    Score   Error  Units
    StringConcat.buffer   avgt   30  127,070 ± 3,904  ms/op
    StringConcat.builder  avgt   30  126,846 ± 6,624  ms/op
    Т.е. различие в 0.2мс при том, что статистическая ошибка порядка 10мс.

  3. #63

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    по поводуэто было сказано в контексте генерации кода на SCL|ST а не к Яве да и имело отношение к другому форумчанину, так что анализ моей воспитанности не Ваш конек
    Цитата Сообщение от capzap Посмотреть сообщение
    чел, который ещё год назад пользовался стрингбуффером, вместо билдера, уже безопасные облачные хранилища втюхивает, начинаю глядеть на Вас с опаской
    ^^^ Вот тут было нехорошо сказано.

    В части "генерации кода на SCL|ST", конечно, с вами соглашусь. Слова класса "вместо ST'шного FOR будет новомодный облачный ЦИКЛ", конечно, ни разу не объясняют чем "облачный FOR" будет лучше простого. Как его ни называй, он же всё равно циклом останется. Но, может, и удастся что-нибудь придумать. Новомодное мыло может оказаться круче старого шила.

  4. #64

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    по Вашему настоянию его я убрал из ссылочного примера, в который раз я говрю что пользуюсь этим https://netbeans.org/kb/docs/java/pr...-intro_ru.html а не вычитанием времени в проекте.
    Я понимаю, что вы пользуетесь netbeans profiler, но это никак вас не оправдывает.
    Моё настояние -- переписать пример на JMH. Можете?
    Я, вот, переписал, и получил ожидаемый результат: разницы между buffer и builder в конкретном примере не нашлось.

    Netbeans profiler -- это инструмент анализа, когда есть что анализировать. А у вас и анализировать пока нечего.
    Вот jmh тест уже можно анализировать. И искать причины "почему работает с одинаковой скоростью".

    Цитата Сообщение от capzap Посмотреть сообщение
    представте когда формируешь svg-строки суточного графика температур, строки получаются очень длинными, конечно может и не 10М, но я не проверял
    Общий объём SVG в 10 мегабайт -- верю. Кстати, я там ошибся, и строки у вас 1e7*5*2==100 мегабайт. Но и в 100 мегабайт html кода даже поверить могу.
    Но, ведь, и надёжнее будет не пытаться всю строку в памяти размещать, а использовать потоковые механизмы.
    Сгенерировали 1 мегабайт, записали его в файл и т.п.

    Но, ведь, у вас не возникнет сомнения, что "строки на 100-1000 байт" встречаются гораздо чаще? Каждое выводимое сообщение, строка в логе, и т.п.

    Оптимизировать процесс, который занимает меньше секунды и строит строку на 50 миллионов символов? И много там наоптимизируете?
    А сколько при этом занимает выборка данных, на основе которых строится этот многомегабайтный отчёт?
    Неужели гораздо быстрее этой самой секунды, что "1 секунда" оказалась узким местом?

    Цитата Сообщение от capzap Посмотреть сообщение
    признаюсь в английском не так силен, но почему http://cr.openjdk.java.net/~shade/8085796/notes.txt используется билдер, а не буффер. Кстати, нетбинс тоже оракловское детище, и если специалист сравнивает с openjdk то наверное с самым скоростным способом стандартного API, а не аутсайдеров
    Да, без английского, немного тяжко.
    Во-первых, между Buffer и Builder разницы никакой нет.
    Во-вторых, даже если она и есть, то объём статьи (и время, требуемое для получения замеров) разрастётся офигеть как и прочитать станет вообще невозможно.
    Да и написать такое будет гораздо сложнее (нужно же правильно вставить кучу цифр).
    В третьих, специалист сравнивает не только "с самым скоростным" (хотя, конечно, имеет сравнивать именно с самым скоростным), но и с тем способом, который openjdk использовала _до этого_. Вот взять текущую openjdk 8. Она компилирует сложение строк через StringBuilder. Значит ли это, что Builder "самый скоростной"? Возможно. Значит ли это, что "Buffer капец какой тормозной"? Вовсе не значит.

    Как это отменяет слова "чел, который ещё год назад пользовался стрингбуффером, вместо билдера"?
    Как это отменяет то, что "замеры нужно делать на jmh"?

    В общем:
    1) Пользуйтесь jmh. Там реально никаких сложностей нет
    2) Не наезжайте на других по вопросам Builder vs Buffer

  5. #65

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    в общем: я доверяю команде разработчиков нетбинс против одного Алексея,продвигающего опенпродукт
    Ась?
    Вы понимаете, что java машин всего 3-4 штуки в МИРЕ? Я говорю не про наколеночные поделки, а про пригодные к использованию.
    Oracle JDK основывается на OpenJDK.
    Это знаете?

    Поймите меня: я не заставляю вас бросить веру в NetBeans.
    И не заставляю "поверить в Алексея".
    Я говорю лишь то, что напряжение нужно измерять вольтметром, а тесты на производительность строить на основе JMH.
    Алексей на примерах (которые вы на своём компьютере повторить можете) красочно рассказывает почему без JMH ничего не получится.

    Цитата Сообщение от capzap Посмотреть сообщение
    анализ показывает, что рекомендуемый класс работает быстрее
    Пока что анализ показывает, что рекомендуемый класс работает ничуть не быстрее.

    Цитата Сообщение от capzap Посмотреть сообщение
    я доверяю команде разработчиков нетбинс
    Нравятся вам рекомендации NetBeans -- не вопрос.
    Но это не повод других тыкать носом в "builder buffer".

  6. #66
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    забили тему человеку туфтой. Создайте отдельную ветку "споры о Java", вас читать интересно конечно, но я бы забанил, будь у меня права.

  7. #67

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    забили тему человеку туфтой. Создайте отдельную ветку "споры о Java", вас читать интересно конечно, но я бы забанил, будь у меня права.
    За волшебный пендель спасибо, давно пора.
    Продолжение тут: http://www.owen.ru/forum/showthread....l=1#post194732

  8. #68

    По умолчанию

    Кстате возвращаясь к теме поста, если кто порекомендует захватчик видео с экрана, то покажу что умеет мой эксельчик.

  9. #69

    По умолчанию

    Цитата Сообщение от qs212 Посмотреть сообщение
    Кстате возвращаясь к теме поста, если кто порекомендует захватчик видео с экрана, то покажу что умеет мой эксельчик.
    Жги!

    Я долго не выбирал, но такое меня порадовало: http://recordit.co/
    Получается так: http://recordit.co/xzAv3BGlzS

    Минус в том, что без звука.
    Плюс -- ссылку на видео получаешь моментально. Т.е не надо ходить и выкладывать отснятое.

    Если нужен звук, то http://camstudio.org/

  10. #70

    По умолчанию

    Добавил описание прототипа.
    http://www.owen.ru/forum/showthread....l=1#post194225
    Готовлю более подробное описание функционала идеи с
    С уважением,
    Владимир
    vmsystems.ru

Страница 7 из 9 ПерваяПервая ... 56789 ПоследняяПоследняя

Похожие темы

  1. АСУ ТП элеватора
    от VAK в разделе Трёп (Курилка)
    Ответов: 61
    Последнее сообщение: 22.02.2016, 00:03
  2. Требуются услуги специалиста АСУ ТП
    от Striker в разделе Трёп (Курилка)
    Ответов: 4
    Последнее сообщение: 25.07.2014, 06:49
  3. Ответов: 12
    Последнее сообщение: 27.01.2014, 08:58
  4. Разработка проекта АСУ ТП "Автоматизация скважин"
    от War10ck в разделе Подбор Оборудования
    Ответов: 4
    Последнее сообщение: 20.01.2014, 15:27
  5. АСУ ТП «КОРМОРАСПРЕДЕЛИТЕЛЬ»
    от yurgin_777 в разделе Подбор Оборудования
    Ответов: 11
    Последнее сообщение: 04.08.2012, 13:21

Ваши права

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