Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что не так с кодом / 14 сообщений из 14, страница 1 из 1
07.01.2019, 17:13
    #39756533
IPmen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
Всем доброго вечера Есть такой метод
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    public static string GetAbsolutePathByRelative(string relative)
        {
            string applicatiionUrl = string.Concat(HttpContext.Current.Request.Url.Authority, 
                HttpContext.Current.Request.ApplicationPath);
            if (!applicatiionUrl.EndsWith("/"))
            {
                applicatiionUrl = string.Format("{0}/", applicatiionUrl); 
            }
            if (relative.StartsWith("../"))
            {
                relative = relative.Replace("../", "");
            }
            return string.Format("{0}://{1}{2}", HttpContext.Current.Request.Url.Scheme, applicatiionUrl, relative);
        }



если мы удаляем код в методе то запрос в Web прилежении работает в три раза быстрее. может кто подсказать что тут не так?
...
Рейтинг: 0 / 0
07.01.2019, 18:12
    #39756539
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
Локализуй, какая строка тормозит.
И что с потокобезопасностью, обеспечивается вызывающим кодом?
...
Рейтинг: 0 / 0
07.01.2019, 21:24
    #39756578
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
IPmen,


в три раза быстрее - это сколько миллисекунд? Как измеряли? Профилировать пробовали?
...
Рейтинг: 0 / 0
08.01.2019, 01:33
    #39756614
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
IPmen,

присоединяюсь к рекомендациям skyANA, а также

замените

Код: c#
1.
GetAbsolutePathByRelative(string relative)



на

Код: c#
1.
GetAbsolutePathByRelative(Uri requestUrl, string applicationPath, string relative)



т.е. уберите зависимость от HttpContext, протестируйте на скорость, увидите, что проблем в логике нет.


вообще, зависимость в методах от HttpContext.Current -- это максимально плохо, хуже некуда.
...
Рейтинг: 0 / 0
08.01.2019, 10:02
    #39756666
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
Если удалить весь код в методе, как он работать будет? ))
...
Рейтинг: 0 / 0
08.01.2019, 10:08
    #39756670
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
ПарамонЕсли удалить весь код в методе, как он работать будет? ))

хороший вопрос лично я постеснялся его задать
...
Рейтинг: 0 / 0
08.01.2019, 10:38
    #39756673
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
ПарамонЕсли удалить весь код в методе, как он работать будет? ))
Никак, т.к. будет ошибка компиляции - у метода объявлен возвращаемый тип. Не был бы - компилятор выкинул бы его нафиг, и все его вызовы вместе с ним.
...
Рейтинг: 0 / 0
08.01.2019, 12:33
    #39756712
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
Сон Веры Павловны,

А у ТС, он работает, причём в 3 раза быстрее )
...
Рейтинг: 0 / 0
09.01.2019, 15:08
    #39757224
256k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
Вот это можно оптимизнуть:
applicatiionUrl = string.Format("{0}/", applicatiionUrl);
->
applicatiionUrl += "/";

Будет быстрее!
...
Рейтинг: 0 / 0
09.01.2019, 15:16
    #39757235
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
256kВот это можно оптимизнуть:
applicatiionUrl = string.Format("{0}/", applicatiionUrl);
->
applicatiionUrl += "/";

Будет быстрее!

Код: c#
1.
2.
var baseUri = new Uri("https://www.sample.com");
var resultUri = new Uri(baseUri, "foo/bar.html");
...
Рейтинг: 0 / 0
09.01.2019, 15:27
    #39757244
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
IPmen,

Почитайте про replace вот здесь . И еще вот здесь .
...
Рейтинг: 0 / 0
09.01.2019, 15:27
    #39757245
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
256kВот это можно оптимизнуть:
applicatiionUrl = string.Format("{0}/", applicatiionUrl);
->
applicatiionUrl += "/";

Будет быстрее!
Это совсем не то, что нужно, судя по методу.
...
Рейтинг: 0 / 0
09.01.2019, 15:27
    #39757246
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
Roman Mejtes256kВот это можно оптимизнуть:
applicatiionUrl = string.Format("{0}/", applicatiionUrl);
->
applicatiionUrl += "/";

Будет быстрее!

Код: c#
1.
2.
var baseUri = new Uri("https://www.sample.com");
var resultUri = new Uri(baseUri, "foo/bar.html");


И это тоже не то.
...
Рейтинг: 0 / 0
09.01.2019, 17:03
    #39757354
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с кодом
skyANA, ну тогда возможно автору стоит обратить взор в сторону класса UriBuilder, там есть и авторизация и схема и всё остальное. Сформировать Uri и вернуть его в виде строки. Но не думаю, что это будет на много быстрее, а проблема именно в том.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что не так с кодом / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]