Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт
Предмет:
Інші
Група:
ПІ

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” КАФЕДРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ  Звіт До лабораторної роботи № 10 З дисципліни : "Конструювання програмного забезпечення" Варіант 3 Як відомо, у мові програмування С# існує 3 можливі передачі параметрів у функцію, для прикладу void DoSmthg1(ref x), void DoSmthg2(out x), void DoSmthg3(x). Визначити додаткові потреби пам’яті та швидкості для усіх трьох способів передачі параметрів. У процедурі DoSmthg обчислити нове значення змінної x. 1. Дані комп'ютера з параметрами на яких відбувалось порівняльне тестування швидкодії та потреб оперативної пам'яті : Процесор – Intel Quad-Core 2.4 Ghz, ОЗП 4 Гб , Операційна система: Windows 7 Ultimate x64. 2.Дані чисельних експериментів. Час виклику функцій з параметром який передається через ref 15 тис. раз, c Час виклику функцій з параметром який передається через out 15 тис. раз, c Час виклику функцій з параметром який передається , без ref і out 15 тис. раз, c ОЗП для функцій з параметром який передається через ref 15 тис. раз, cMB ОЗП для функцій з параметром який передається через out 15 тис. раз, cMB ОЗП для функцій з параметром який передається без ref і out 15 тис. раз, cMB  Експеримент №1 0.002 0.041 0.037 36.78 37.10 37.41  Експеримент №2 0.002 0.037 0.038 35.08 36.11 36.42  Експеримент №3 0.002 0.039 0.037 35.82 36.13 36.44  Експеримент №4 0.003 0.039 0.037 35.83 36.14 36.45  Експеримент №5 0.001 0.041 0.038 35.79 36.10 36.42  Виглад диспетчера задач після виконання програми:   3) Усереднені дані обчислювальних експериментів фукцій з параметром який передається через ref фукцій з параметром який передається через out функцій з параметром який передається , без ref і out  Середні потреби оперативної пам’яті, 15 тис викликів, MB 35.86 36.32 36.62  Середній час 15 тис викликів, с 0.002 0.039 0.037   Код програми: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace ConsoleApplication2 { class Program { static void Met1(ref int i, int f) { i = 300; if (f > 0) { --f; --i; Met1(ref i, f); } } static void Met2(out int i,int f) { i = 300; if (f > 0) { --f; --i; Met2(out i, f); } } static void Met3( int i, int f) { i = 300; //i++; if (f > 0) { --f; --i; Met3( i, f); } } static void Main() { int Z = 250; int f = 15000; int i=15000; int k = 0; DateTime Time1 = DateTime.Now; for (k = 0; k < Z; k++) Met1(ref k,f); DateTime Time2 = DateTime.Now; Console.WriteLine("Передаємо параметр через ref = {0}", Time2 - Time1); Process[] processlist = Process.GetProcessesByName("ConsoleApplication2.vshost"); Console.WriteLine(processlist[0].PagedMemorySize64 / 1024.0 / 1024.0); Time1 = DateTime.Now; for (k = 0; k < Z; k++) Met2(out i,f); Time2 = DateTime.Now; Console.WriteLine(" Передаємо параметр через out= {0}", Time2 - Time1); processlist = Process.GetProcessesByName("ConsoleApplication2.vshost"); Console.WriteLine(processlist[0].PagedMemorySize64 / 1024.0 / 1024.0); Time1 = DateTime.Now; for (k = 0; k < Z; k++) Met3( k,f); Time2 = DateTime.Now; Console.WriteLine(" Просто передаємо параметр= {0}", Time2 - Time1); Process[] processlist3 = Process.GetProcessesByName("ConsoleApplication2.vshost"); Console.WriteLine(processlist3[0].PagedMemorySize64 / 1024.0 / 1024.0); Console.ReadLine(); } } }  Висновок: В даній лабораторній роботі розглядалося швидкодію і затрати в пам’яті для виклику функцій передаючи їм параметри через ref і out, і без ref та out. Малі затрати в часі коли ми передаємо параметр через ref пов’язані з тим, що ми передаємо саме посилання на місце в пам’яті де знаходяться дані. Використовуючи параметр Out передаємо посилання на місце в пам’яті і за тим посиланням копіюємо дані, це і зумовлює більші затрати в часі і в пам’яті. Коли ми передаємо параметр не використовуючи ні ref ні out то ми вже посилання не передаємо, а просто копіюємо дані.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!