Подразделение интервала Java, смущающее меня

Попробуйте этот код.

Это - немного измененная версия Вашего кода.
1. Я удалил Консоль. WriteLine, поскольку это - вероятно, немного порядков величины медленнее, чем, что я пытаюсь измерить.
2. Я запускаю Секундомер перед циклом и останавливаю его прямо после, этот способ, которым я не теряю точность, если функция берет, например, 26,4 галочек для выполнения.
3. Путем Вы разделились, результат некоторыми повторениями был неправильным. Посмотрите то, что происходит, если у Вас есть 1 000 миллисекунд и 100 миллисекунд. В обеих ситуациях Вы получите 0 мс после деления его 1000000.

Stopwatch s = new Stopwatch();

var p = new { FirstName = "Bill", LastName = "Gates" };

int n = 1000000;
long fElapsedMilliseconds = 0, fElapsedTicks = 0, cElapsedMilliseconds = 0, cElapsedTicks = 0;

string result;
s.Start();
for (var i = 0; i < n; i++)
    result = (p.FirstName + " " + p.LastName);
s.Stop();
cElapsedMilliseconds = s.ElapsedMilliseconds;
cElapsedTicks = s.ElapsedTicks;
s.Reset();
s.Start();
for (var i = 0; i < n; i++)
    result = string.Format("{0} {1}", p.FirstName, p.LastName);
s.Stop();
fElapsedMilliseconds = s.ElapsedMilliseconds;
fElapsedTicks = s.ElapsedTicks;
s.Reset();


Console.Clear();
Console.WriteLine(n.ToString()+" x result = string.Format(\"{0} {1}\", p.FirstName, p.LastName); took: " + (fElapsedMilliseconds) + "ms - " + (fElapsedTicks) + " ticks");
Console.WriteLine(n.ToString() + " x result = (p.FirstName + \" \" + p.LastName); took: " + (cElapsedMilliseconds) + "ms - " + (cElapsedTicks) + " ticks");
Thread.Sleep(4000);

Те - мои результаты:

1000000 x заканчиваются = строка. Формат (" {0} {1} ", p. FirstName, p. LastName); взял: галочки на 618 мс - 2213706
1000000 x заканчиваются = (p. FirstName +" "+ p. LastName); взял: галочки на 166 мс - 595610

10
задан Adam Goode 10 November 2009 в 04:43
поделиться

3 ответа

The value 0200 is an octal (base 8) constant. It is equal to 128 (decimal).

From Section 3.10.1 of the Java Language Specification:

An octal numeral consists of an ASCII digit 0 followed by one or more of the ASCII digits 0 through 7 and can represent a positive, zero, or negative integer.

22
ответ дан 3 December 2019 в 15:22
поделиться

Здесь наблюдается интересное поведение.

Если я выполняю Integer.parseInt ("0200") , я получаю 200 как o / стр.

Howzzat?!

1
ответ дан 3 December 2019 в 15:22
поделиться

The value 0200 is an octal, which is 128 in decimal.

For further information, see the literals section of the Primitive Data Types explanation.

6
ответ дан 3 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

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