Как рассчитать разницу во времени в java?

Короткий ответ? Иногда.

Технически каждая абстракция имеет стоимость, и язык программирования является абстракцией для того, как ЦП работает. C однако очень близко. Несколько лет назад я не забываю смеяться вслух, когда я вошел в систему своя учетная запись UNIX и получил следующее сообщение состояния (когда такие вещи были популярны):

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

Это забавно, потому что это верно: C похож на портативный ассемблер.

стоит отметить, что ассемблер просто работает однако, Вы пишете это. Существует однако компилятор промежуточный C и ассемблер, который он генерирует, и это чрезвычайно важно, потому что то, как быстро Ваш код C, имеет очень много, чтобы сделать с тем, насколько хороший Ваш компилятор.

то, Когда gcc вышел на сцену одна из вещей, которые сделали его столь популярным, было то, что это было часто настолько лучше, чем компиляторы C, которые поставлялись со многими коммерческими ароматами UNIX. Не только было это ANSI C (ни один из этого K& R C мусор), был больше устойчивое и обычно производило лучше (более быстрый) код. Не всегда, но часто.

я говорю Вам все это, потому что нет никакой всеохватывающей нормы о скорости C и ассемблера, потому что нет никакого объективного стандарта для C.

Аналогично, ассемблер варьируется много, в зависимости от какого процессора Вы работаете, Ваша системная спецификация, какую систему команд Вы используете и так далее. Исторически было два семейства архитектур ЦП: CISC и RISC. Крупнейший плеер в CISC был и все еще является архитектурой Intel x86 (и система команд). RISC доминировал над миром UNIX (MIPS6000, Альфа, Sparc и так далее). CISC выиграл сражение за основы и умы.

Так или иначе, популярная мудрость, когда я был младшим разработчиком, была то, что рукописный x86 мог часто быть намного быстрее, чем C, потому что способ, которым работала архитектура, она имела сложность, которая извлекла выгоду от человека, делающего ее. RISC, с другой стороны, казался разработанным для компиляторов так никто (я знал), записал, говорит ассемблер Sparc. Я уверен, что такие люди существовали, но несомненно они и сошли с ума и были узаконены к настоящему времени.

Системы команд являются важным моментом даже в том же семействе процессоров. Определенные процессоры Intel имеют расширения как SSE через SSE4. AMD имел их собственные инструкции SIMD. Преимущество языка программирования как C было кем-то, мог записать их библиотеку, таким образом, это было оптимизировано для того, какой бы ни процессор Вы работали. Это было тяжелой работой в ассемблере.

существует все еще оптимизация, которую можно сделать в ассемблере, который не мог сделать никакой компилятор, и правильно написанный ассемблерный алгоритм будет столь же быстрым или быстрее, чем это - эквивалент C. Больший вопрос: действительно ли это стоит того?

В конечном счете, хотя ассемблер был продуктом своего времени и был более популярным в то время, когда циклы ЦП были дорогими. В наше время ЦП, который стоит $5-10 для производства (Intel Atom), может сделать в значительной степени что-либо, что любой мог хотеть. Единственная настоящая причина для записи ассемблера в эти дни для низкоуровневых вещей как некоторые части операционной системы (несмотря на это, подавляющее большинство ядра Linux записано в C), драйверы устройств, возможно встроенные устройства (хотя C имеет тенденцию доминировать там также), и так далее. Или только для ударов (который является несколько мазохистским).

84
задан user607304 7 February 2011 в 23:19
поделиться

1 ответ

Я нашел это больше инструмента для очистки.

       Date start = new Date();
        //Waiting for 10 seconds
        Thread.sleep(10000);
        Date end = new Date();
        long diff = end.getTime() - start.getTime();
        String TimeTaken = String.format("[%s] hours : [%s] mins : [%s] secs",
                Long.toString(TimeUnit.MILLISECONDS.toHours(diff)), 
                TimeUnit.MILLISECONDS.toMinutes(diff),
                TimeUnit.MILLISECONDS.toSeconds(diff));
        System.out.println(String.format("Time taken %s", TimeTaken));

Вывод : Время потрачено [0] часы: [0] минуты: [10] secs

0
ответ дан 24 November 2019 в 08:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: