25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

488 Въведение в програмирането със C#<br />

"Numbers: 12345678910111213141516..." (останалите числа от 17 до 20<br />

000 са заместени с многоточие, с цел относителна представа за резултата).<br />

Вероятно не ви е направило впечатление забавянето при изпълнение на<br />

фрагмента. Всъщност използването на конкатенацията в цикъл е<br />

забавила значително нормалния изчислителен процес и на<br />

средностатистически компютър (от януари 2010 г.) итерацията на цикъла<br />

отнема 1-3 секунди. Потребителят на програмата ни би бил доста скептично<br />

настроен, ако се налага да чака няколко секунди за нещо елементарно,<br />

като слепване на числата от 1 до 20 000. Освен това в случая 20 000 е само<br />

примерна крайна точка. Какво ли ще бъде забавянето, ако вместо 20 000,<br />

потребителят има нужда да долепи числата до 200 000? Пробвайте!<br />

Конкатениране в цикъл с 200000 итерации - пример<br />

Нека развием горния пример. Първо, ще променим крайната точка на<br />

цикъла от 20 000 на 200 000. Второ, за да отчетем правилно времето за<br />

изпълнение, ще извеждаме на конзолата текущата дата и час преди и след<br />

изпълнението на цикъла. Трето, за да видим, че променливата съдържа<br />

желаната от нас стойност, ще изведем част от нея на конзолата. Ако искате<br />

да се уверите, че цялата стойност е запаметена, може да премахнете<br />

прилагането на метода Substring(…), но самото отпечатване в този случай<br />

също ще отнеме доста време.<br />

Крайният вариант на примера би изглеждал така:<br />

class NumbersConcatenator<br />

{<br />

static void Main()<br />

{<br />

Console.WriteLine(DateTime.Now);<br />

string collector = "Numbers: ";<br />

for (int index = 1; index

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!