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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> На сколько быстрее массив вектора, Сравнимо ли их быстродействие? 
V
    Опции темы
ller
Дата 7.9.2009, 23:44 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

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



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

Код

double mass[100];

mass[i];


и

Код

vector<double>mass;

mass[i];

PM MAIL   Вверх
ller
Дата 8.9.2009, 00:18 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

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



провел небольшое сравнение
Код

for mass dt =   0.000392787
for vector dt = 0.00076546
....
for mass dt =   0.000317638
for vector dt = 0.000731657
....
for mass dt =   0.000314286
for vector dt = 0.000780267
....
for mass dt =   0.000320711
for vector dt = 0.000703441
....
for mass dt =   0.000314844
for vector dt = 0.000775518
....
for mass dt =   0.000314006
for vector dt = 0.000774959
....
for mass dt =   0.000318197
for vector dt = 0.000735848
....
for mass dt =   0.000315683
for vector dt = 0.00097247
....
for mass dt =   0.000312889
for vector dt = 0.00106131
....

Массив раза в 2-3 быстрее вектора...
Код

    for(unsigned long long int i= 0;i<100000;i++)
        {
        mass[i]=mass[i]+mass[i];
        }

    for(unsigned long long int i= 0;i<100000;i++)
        {
            vtr[i]=vtr[i]+vtr[i];
        }
   


Это сообщение отредактировал(а) ller - 8.9.2009, 00:18
PM MAIL   Вверх
S3_
Дата 8.9.2009, 00:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Зато вектор "умный"  smile 
PM MAIL   Вверх
NightmareZ
Дата 8.9.2009, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(ller @  8.9.2009,  00:18 Найти цитируемый пост)
Массив раза в 2-3 быстрее вектора...


Мы всё умрём?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Lazin
Дата 8.9.2009, 05:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(ller @  8.9.2009,  00:18 Найти цитируемый пост)
Массив раза в 2-3 быстрее вектора...

твоя мама знает, чем ты занимаешься в интернете? smile 
PM MAIL Skype GTalk   Вверх
jonie
Дата 8.9.2009, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



да он нам врет имхо...

вот код в реализации MS (VC9):
Код

const_reference operator[](size_type _Pos) const
{
return (*(_Myfirst + _Pos));
}
в релизе, конечно.
Что в точности есть тоже что и массив, разве что для массива оптимизатор мог (например) развернуть for....
так что в 2-3 раза это полный гон имхо.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Lazin
Дата 8.9.2009, 07:44 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(jonie @  8.9.2009,  07:27 Найти цитируемый пост)
Что в точности есть тоже что и массив, разве что для массива оптимизатор мог (например) развернуть for....
так что в 2-3 раза это полный гон имхо

не совсем, массив в стеке немного быстрее, так как меньше уровень косвенности при обращении к данным и locality лучше, но сравнивать нужно именно вектор с массивом выделенным в хипе, иначе сравнение некорректно
массив в стеке можно сравнить с boost::array
PM MAIL Skype GTalk   Вверх
Anikmar
Дата 8.9.2009, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Уже спорили на эту тему. 
В вышеприведенном виде скорость одинаковая (практически). Массив шустрее вектора только в варианте [] против at() (но это и очевидно). Тут все дело видимо в способе измерения скорости. Не может быть такой разницы.

Вектор это вовсе не отдельная библиотека - а просто шаблон и написан толково.

Другой вопрос - смысл исползовать вектор и применять его как массив ИМХО я этого не понимаю. Вектор на то и нужен, чтобы "умничать".

PM MAIL ICQ   Вверх
ller
Дата 8.9.2009, 09:18 (ссылка)    | (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

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



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

Тогда почему такая разница получилась? Только потому что массив статический?
PM MAIL   Вверх
Anikmar
Дата 8.9.2009, 09:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(ller @  8.9.2009,  09:18 Найти цитируемый пост)
Тогда почему такая разница получилась? Только потому что массив статический? 

Сложно сказать, не видя полностью то, каким образом проводилось сравнение., как объявлялись массивы, как измерялась скорость.

PM MAIL ICQ   Вверх
ller
Дата 8.9.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

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



Код

    LARGE_INTEGER freq;
    QueryPerformanceFrequency(&freq);
    LARGE_INTEGER time1;
    QueryPerformanceCounter(&time1);    

    for(unsigned long long int i= 0;i<100000;i++)
        {
        mass[i]=mass[i]+mass[i];
        }

    LARGE_INTEGER time2;
    QueryPerformanceCounter(&time2);
    time2.QuadPart -= time1.QuadPart;
    double span = (double) time2.QuadPart / freq.QuadPart;
    cout << "for mass dt =   " << span << endl;



   QueryPerformanceCounter(&time1);    

    for(unsigned long long int i= 0;i<100000;i++)
        {
            vtr[i]=vtr[i]+vtr[i];
        }
   
    QueryPerformanceCounter(&time2);
    time2.QuadPart -= time1.QuadPart;
    span = (double) time2.QuadPart / freq.QuadPart;


Может я не так меряю время вполнения?

Добавлено через 3 минуты и 7 секунд
Код

    int *mass;
    vector<int> vtr;

    mass = new int[100000];

    for(unsigned long long int i= 0;i<100000;i++)
        mass[i]=1;



    for(unsigned long long int i= 0;i<100000;i++)
        {
            vtr.push_back(1);
        }


PM MAIL   Вверх
azesmcar
Дата 8.9.2009, 09:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(ller @  8.9.2009,  09:22 Найти цитируемый пост)
Может я не так меряю время вполнения?

 smile 
ты бы еще с доступ по индексу массива с созданием COM объектов сравнил smile как можно сравнивать установку значения СУЩЕСТВУЮЩЕГО элемента массива и создание НОВОГО элемента с помощью push_back?
PM   Вверх
ller
Дата 8.9.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

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



jonie, на счет полного гона... Я сделал тест, прогнал его, получились такие результаты. Я и хочу понять, может я чего то не то делаю. Если вектор сопоставим по скорости, то вектор ГОРАЗДО удобнее массива, то буду использовать его, ну а если нет...


azesmcar, Где я такое меряю?!  smile 
Это показано как я массивы создаю инициализирую? Где Вы там увидели что я скорость меряю? Мерятся скорость сложения элементов
mass[i]=mass[i]+mass[i];

Это сообщение отредактировал(а) ller - 8.9.2009, 09:50
PM MAIL   Вверх
zim22
Дата 8.9.2009, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(azesmcar @  8.9.2009,  09:43 Найти цитируемый пост)
 как можно сравнивать установку значения СУЩЕСТВУЮЩЕГО элемента массива и создание НОВОГО элемента с помощью push_back?

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

Это сообщение отредактировал(а) zim22 - 8.9.2009, 09:49


--------------------
PM MAIL   Вверх
azesmcar
Дата 8.9.2009, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(ller @  8.9.2009,  09:46 Найти цитируемый пост)
azesmcar, Где я такое меряю?!  smile  


Цитата(ller @  8.9.2009,  09:22 Найти цитируемый пост)
    mass = new int[100000];
    for(unsigned long long int i= 0;i<100000;i++)
        mass[i]=1;
    for(unsigned long long int i= 0;i<100000;i++)
        {
            vtr.push_back(1);
        }

Вот..
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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