Софтуерно Инженерство
Loading...
+ Нов въпрос
SvilenPavlov avatar SvilenPavlov 11 Точки

Programming Fundamentals - Text Processing Exercises Problem 5. Character Multiplier

Здравейте, другари!

 

Имам въпрос относно този код - https://pastebin.com/dfAsqzm6

Закоментираната версия е с резултат 80/100 лимит време- 0.316 s, Памет - 12.19 MB 

докато тази, която си върви е 100/100 -  0.078 s, Памет - 10.50МВ

В единия случай имаме 4х по-дълго време и 20% повече памет.
По моята логика не би следвало да има чак такава разлика защото:

Бавния вариянт върти до по-големия лент (примерно 500)

Бързия вариянт върти до по-малкия лент (примерно 20), и после пак минава останалите цикли до големия лент (прим. от 20 до 500 =480 пъти.)
Т.е общо пак имаме 500 цикъла. Защо е толкова голяма разликата във времето??

Тагове:
TeodorStefanovPld avatar TeodorStefanovPld 1282 Точки
  1. StringBuilder first = new StringBuilder(input[0]);

  2.             StringBuilder second= new StringBuilder(input[1]);

  3.             StringBuilder leftover = new StringBuilder();

това е абсолютно излишно ти си имаш стрингове зашо презаписваш стринг в stringbuilder само ти си знаеш.

второ има доста голяма разлика първия вариант които си закоментирал и дава грешка с паметта върти целия стринг и имаш 4 проверки.

а втория варинт които ти минава е с пъти по бърз защото извършваш операциите върху части от стринга.

Сега ако тръгна да ти обеснявам точно защо е разликата може би ще те объркам но това е заради начина по които работи компилатора и тн ако те интересува прочети малко за stack и heap. Общо взето е свързано с това как се пазят променливите къде и как се достъпват и тн. теоритично и 2ата варианта са правилни но при поставените ти условия оптимизирания вариант е правилен. Сещам се по няколко начина как да го обесня но все става сложно,това са малко по адвансед конценпций и макар да ги разбирам ми е трудно още да ги обеснявам на ниско ниво. 

0
kolioi avatar kolioi 612 Точки

При мен и двата варианта минават със 100/100, Memory: 8.56 MB, Time: 0.046 s

0