Цитата |
---|
Michael Bulychev написал: Добрый день. Пришлите нам пример кода для тестов. Кроме того, если вставлять и удалять элементы с индексом 1, то мы получим линейную зависимость времени работы от размера таблицы. |
Михаил.
Естественно что для обмена между потоком терминала и потоком скрипта нам требуется очередь FIFO. Поэтому при использовании table.s есть 2 варианта.
1. Добавлять данные в хвост таблицы (быстро) и удалять первое значение (медленно)
2. Добавлять в начало таблицы (медленно) и убирать последнее значение (быстро)
Хрен редьки не слаще.
Теста у меня уже нет, удалил. писать там особо нечего сначала в цикле добавляем через sinsert миллион строк, после чего в цикле удаляем первое значение по sremove.
на моем компьютере за секунду удалялось 10 значений (каждую секунду). я подождал минут 5 и понял, что ждать дальше смысла нет. Предположений два: либо размеряются какие-то временнЫе промежутки, равные 1/10 секунды, либо перелопачивание всего массива функцией sremove несет огромные расходы.
И в том и другом случае - на помойку. Заменил на собственную функцию с тем же интерфейсом - проблемы исчезли.
миллион значений - вполне нормальная ситуация из реальной задачи.