powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А много ль затрат при передаче огромных объектов по ссылке?
8 сообщений из 108, страница 5 из 5
А много ль затрат при передаче огромных объектов по ссылке?
    #38111782
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я удалил ненужный цикл и вообще заменил его функцией. Вы же на сказали, для каких задач этот массив нужен. Если вам постоянно нужны два миллиона строк с возрастающих числом на конце, то это одно. А если время от времени строка с числом на конце - то функция с параметром (в виде лямбды-делегата) лучший выход.
не можете решить конкретную задачу - максимально быстро получить 2.000.000 объектов индексированных строк.( а по сути рещить проблему сложения строк и конверсии числа в строку ) - так и напишите не можу решить элементарных вещей.

а задача - происходит пиковая нагрузка. и нужно за короткое время принять сообщения. нужно что бы кажое сообщение не переплелось с другим.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38112137
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

А можно показать как легко и непринужденно уменьшить время исполнения второго цикла хотя бы в 10 раз, безо всяких оптимальных решений, когда время выполнения второго цикла "будет по времени практически такое же, что и исполнение первого цыкла".
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38112156
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без unsafe.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38112281
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticbeg-in-er,

А можно показать как легко и непринужденно уменьшить время исполнения второго цикла хотя бы в 10 раз,
а не покажу. то было мысленное решение в 10 раз, оценочное.
на компе появилось решение получше.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38113279
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

Показывайте. А я покажу что есть у меня.
В общем, у нас есть исходный вариант (0.07s) и плохой вариант (1s), плохой вариант медленнее исходного в ~15 раз. Нам нужно оптимизировать плохой вариант.
Первым делом избавляемся от боксинга q, время выполнения снижается до 0.9s, т.е. на 10%.
Затем предположим, что мы написали лучший метод, чем string.Concat и избавились от конкатенации строк с нулевыми потерями производительности, получаем время выполнения 0.59s, но это даже не вдвое меньше чем исходный плохой вариант.
Дальше остается оптимизировать int.ToString(), который использует нативную функцию для конвертации числа в строку, а нам нужно сделать быстрее.
Может я где-то очевидную ошибку допускаю? Всё-таки оптимизацией приходится редко заниматься.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38113307
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic,
ну я тоже не каждый день провожу оптимизацию в 1.000 раз 13782217

в начале я думал просто в байты перевести и потом шлёпать в хвост байт-строки какой-то разделитель и 4 байта числа.
а потом , когда попробывал что то сделать , пришло другое решение

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
  class Z_class
        {
            public string[] SSS;
            public int[] qq;
            bool[] b2;  //признак обработанной строки
            public string this[int q]
            {
                get
                {
                    if (b2 == null)
                        b2 = new bool[SSS.Length];
                    if (!b2[q])
                    {
                        b2[q] = true;
                        SSS[q] = SSS[q] + qq[q];
                    }
                    return SSS[q];
                }
            }
          
        }
        void K1()
        {
            Z_class = new  Z_class();
            string[] SSS = new string[2000000];
            int[] qq = new int[SSS.Length];

            for (int q = 0; q < 2000000; q++)
            {
                SSS[q] = "sssssss";
                qq[q] = q;
            }
            xxx.SSS= SSS;
            xxx.qq = qq;
        }



тупо , в лоб. но за тоже время, что и время работы первого цыкла, получаем при обращении к памяти нужную строку.
тупо , на первоначальном этапе избавился от сложения и приведения числа в строку. в этом наверно и есть оптимальность решения.

как то так.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38113324
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

Ну это вообще лол. Пройдите по этому массиву полностью один раз и по времени на то и выйдет. Подразумевалось же, что массив нужен весь и сразу.

>в этом наверно и есть оптимальность решения
Оптимальность решения в том, что вы не считаете всё и сразу, а выдаёте результат малыми порциями.

А решение у вас хорошее, мне понравилось. В отличие от кода =)
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38113352
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic,

авторПодразумевалось же, что массив нужен весь и сразу.
неа, я написал несколько не так:
что бы в памяти болталось 2.000.000 объектов, содержащих строку
Z_class[0] же содержит строку . ну это казуистика.

а код мне и самому не нравится. но что то не было желания его причесать.
а решение да, мне и самому по душе.
...
Рейтинг: 0 / 0
8 сообщений из 108, страница 5 из 5
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А много ль затрат при передаче огромных объектов по ссылке?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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