Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как не надо писать код 
:(
    Опции темы
baldina
Дата 4.1.2014, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Ну мифа-то нет никакого, речь идет об асимптотическом поведении, а константы могут быть сколь угодно большими.

что касается замеров скорости, я не вижу подтверждения:
http://ideone.com/bAzcuQ
PM MAIL   Вверх
azesmcar
Дата 13.1.2014, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



baldina

Хитришь smile 
Сравнение не честное, причем ни для вектора ни для листа.
Не учитывается время на аллокацию памяти для вектора, так-как делается резерв и не учитывается тот факт, что вставка в определенную позицию вектора (в данном случае в начало) медленная операция.
Было бы честно сравнить время вместе с вызовом резерва и с операцией push_back.

Вот результаты без вызора vector::reserve вообще и с push_back вместо insert для 100000000 элементов.

Код

vector time = 570000
list time   = 2890000


Ключевую роль играет кэширование при копировании данных в векторе.

Это сообщение отредактировал(а) azesmcar - 13.1.2014, 17:03
PM   Вверх
baldina
Дата 13.1.2014, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(azesmcar @  13.1.2014,  16:47 Найти цитируемый пост)
Не учитывается время на аллокацию памяти для вектора

это входило в условия, см. выше

Цитата(azesmcar @  13.1.2014,  16:47 Найти цитируемый пост)
не учитывается тот факт, что вставка в определенную позицию вектора (в данном случае в начало) медленная операция

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

так что считаю свой тест адекватным ;-)

:off
для тех кто не все понял с первого раза.
тесты (наукообразно - эмпирический анализ) штука тонкая. что бы их проводить (и что бы интерпретировать готовые результаты) нужно учитывать самые различные факторы (все существенные).
что бы потом не стыдиться своих скороспелых заявлений об ошибках в компиляторах, развенчании мифов и т.п.
PM MAIL   Вверх
azesmcar
Дата 13.1.2014, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(baldina @  13.1.2014,  18:42 Найти цитируемый пост)
это входило в условия, см. выше

Ну тогда тем более вектор быстрее smile

Цитата(baldina @  13.1.2014,  18:42 Найти цитируемый пост)
вставка в любую позицию вектора это медленная операция. при случайной позиции среднее число перемещений n/2

Ну так и я об этом smile 

Цитата(baldina @  13.1.2014,  18:42 Найти цитируемый пост)

так что скорее вставка в конец не честна. 
и про это не было в условиях. если бы я выбрал середину, результат у вектора был бы лучше, но лишь в 2 раза. т.е. не принципиально

В таком случае число перемещений эквивалентно числу числу вставляемых элементов. Если это то, что просил автор, тогда не совсем понятно с какой пьяни сравнивать контейнеры в контексте задачи, для которой один из них совершенно непригоден (это я про вектор) smile
А вариант со вставкой в конец честен чем, что использует оба контейнера эффективно, а не использует заранее неэффективный метод одного и сравнивает с другим smile

Добавлено через 8 минут и 44 секунды
baldina

Цитата(Lukkoye @  4.1.2014,  01:27 Найти цитируемый пост)
Настолько медленный, что за это время можно несколько раз вставить элемент размеров в 32 байта и в количествt 1000 штук (я делал замеры по скорости, но это было давно и точных цифр не помню) в вектор путем копирования его элементов в право (расширение), при условии, что у вектора достаточно резерва и он не реалокнется.

Ага, вижу. Невнимательно прочитал сперва.

Ну тогда да, естественно лист будет быстрее.

Это сообщение отредактировал(а) azesmcar - 13.1.2014, 18:53
PM   Вверх
nonaot
Дата 14.1.2014, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.1.2014

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
Artemon
Дата 21.2.2014, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Интересно, у кого-то бывает такое: находишь какой-то очень тонкий момент в коде, ставишь у себя в голове пометку, что так больше делать не нужно. Потом со временем забываешь и восстанавливая из памяти куски информации кажется, что именно так и нужно сделать.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
NoviceF
Дата 5.5.2014, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону

Репутация: нет
Всего: 2



Цитата(Artemon @  21.2.2014,  22:59 Найти цитируемый пост)
Потом со временем забываешь и восстанавливая из памяти куски информации кажется, что именно так и нужно сделать


Похоже это какое-то свойство памяти.. у меня такое бывает безотносительно кода smile
PM MAIL   Вверх
TarasProger
Дата 15.8.2015, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 5.8.2015

Репутация: нет
Всего: нет



Цитата(Ignat @  18.3.2006,  06:52 Найти цитируемый пост)
1. Видимо, все знание автора об отличиях С от С++ сводится к наличию единственного класса, единственный экземпляр которого инстанцирован в структуру(!), что само по себе нормально, за исключением того вопроса на фига это там было нужно, для меня так и
осталось загадкой.
Наоборот я ещё себе хоть как то представлюя. Но экземпляр класса в роли члена стурктуры?! Энто ж за задача нужна, чтоб оправдать такое безобразие?

Добавлено через 7 минут и 27 секунд
Цитата(Ignat @  18.3.2006,  06:52 Найти цитируемый пост)
Но, блин, чтоб выбрать элемент по имени,
мне перебор прикажете делать?

1. А что сложного его сделать?
2. Для этой целим можно сделать функцию find. А если бы программа была по-настоящему ООП-ной, то и перегрузить оператор [], чтоб индексировал по стригам. Релизация - тот же перебор.
3. Зачем сдесть STL?

Добавлено через 9 минут и 43 секунды
Цитата(Ignat @  18.3.2006,  06:52 Найти цитируемый пост)
void stdexitcls(char s, float pt, float sl, int bth)
{ sexord=1; sexi=s; sexpt=ptt(pt); sexsl=ptt(sl); sexbrs=bth; };
Вот я тоже не телепат. Смотрим объявление, например: 
Очистка экрана при выходе из пространства имён std. Вот только как это будет на c/c++?

Добавлено через 10 минут и 51 секунду
Цитата(Ignat @  18.3.2006,  06:52 Найти цитируемый пост)
Вот я тоже не телепат. Смотрим объявление, например:
char sexi; // standard exit id
Есть пол МЭ, есть пол ЖО, оба сложены в массив, а эта переменная - её индекс.

Добавлено через 14 минут и 1 секунду
Цитата(chipset @  18.3.2006,  07:09 Найти цитируемый пост)
10. switch на 10 вариантов.
А, ну конечно, он предназначен для одного варианта. Вот только чем тогда if не устроил, что свич понадобился?

PM MAIL   Вверх
TarasProger
Дата 15.8.2015, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 5.8.2015

Репутация: нет
Всего: нет



Цитата(chipset @  18.3.2006,  07:09 Найти цитируемый пост)
11. Функции принимающие 10 (да-да, 10) параметров.
А 35 не хотите? А то и 50. При этом все одного типа.

PM MAIL   Вверх
TarasProger
Дата 15.8.2015, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 5.8.2015

Репутация: нет
Всего: нет



Рекурсия на пустом месте: 
Код
unsgned long long int Fact(uint8_t n)
{
 if (n==0)
 {
  return 1;
 }
 return n*Fact(n-1);
}
 и особенно: 
Код
double Det(double a[300][300], size_t n)
{
 double m[300][300];
 size_t i;
 size_t i1;
 size_t i2;
 size_t j;
 double r;
 double b;
 if (n==2)
 {
  return a[0][0]*a[1][1]-a[0][1]*a[1][0];
 }
 for (r=0.0, i=0; i<n; ++i)
 {
   for (i1=0, i2=0, i1<n; ++i1)
   {
    if (i1!=i)
    {
     for (j=1; j<n; ++j)
     {
      m[j][i2]=a[j-1][i1];
     }
    }
    ++i2;
   }
   b=det(m, n-1);
   if ((i%2)==0)
   {
    r+=b;
   }
   else
   {
    r-=b;
   }
 }
 return r;
}
.

Это сообщение отредактировал(а) TarasProger - 15.8.2015, 13:05
PM MAIL   Вверх
korol
Дата 4.3.2016, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.3.2016

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
Google
  Дата 22.10.2019, 02:04 (ссылка)  





  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1388 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.