Форум программистов, компьютерный форум CyberForum.ru

Скорость выполнения, а так же работа с дв. файлами - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
24.06.2012, 22:07     Скорость выполнения, а так же работа с дв. файлами #1
Здравствуйте. У меня есть несколько вопросов, на которые я уже давненько ищу ответы, а именно :

1) Для таких классов, как vector/set/map и прочих, что быстрее - iterator или [] ?

2) Тот же вопрос, но для двумерного vector/set/map, ведь, если даже itearator быстрее [] для одномерного, то, чтобы получить доступ к элементу a[i+1][j+1] через итераторы, придется писать нечто подобное (и не иначе? есть ли возможность другого доступа к i+-N элементов?) :
*((i+1)->begin() + int(j - i->begin() + 1))
В данном случае [] будет гораздо быстрее, так ведь?

3) Есть ли различия в скорости между :
const int MAX = 1000*1000;
vector < vector <int> > a(MAX, vector<int>(MAX));
и
vector < vector <int> > a(MAX);
for (int i=0; i<MAX; i++)
a[i].resize(MAX);
?

4) Недавно работал с двоичными файлами и нужно было не считывая и не записывая ничего в файл (по неизвестному N, которое определяет кол-во элементов в файле), при помощи fseek пробежаться эти N раз с отступом по sizeof и, соответственно, определить его, но вот беда, fseek в упор не видел feof и EOF. Как ни старался, он его проходит и ничего путного о конце файла не говорит, причем не важно - прошел он его мимо или прямо-таки "наступил" на него.. Кто-нибудь сталкивался?

5) Слышал, что функции корня и возведения в степень можно заменить логарифмами и что это, якобы, быстрее, но сколько не шарюсь в гугле, найти чего-то путного по этому поводу не могу.. Можете сказать, как же произвести замену или хотя бы дать ссылку на статейку/заметку?

6) Быстрее ли inline-функция, чем обычная функция? Если да, то на сколько (примерно)? Есть хотя бы 100-200 тактов?

7) Недавно сталкивался с задачкой на оптимизацию и столкнулся с фактом, который не могу объяснить, а именно : цикл от 0 до N работает медленнее, чем цикл от N до 0, причем при больших данных, эта разница была огромной (Задача была в небольшой работе с массивом, был двойной цикл от 0 до (максимум) 2000. При максимальном значении, разница между 0->N и N->0 была в районе 0,3 секунд). Кто-нибудь может пояснить, откуда? Почему такая разница?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2012, 17:06     Скорость выполнения, а так же работа с дв. файлами
Еще ссылки по теме:

Как узнать скорость выполнения программы? C++
C++ Работа с файлами
Работа с файлами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.06.2012, 17:06     Скорость выполнения, а так же работа с дв. файлами #21
Цитата Сообщение от Shandr_71 Посмотреть сообщение
Дык на х64.

Я забыл, что ассемблерный код для х64 тоже вывести можно. Извиняйте.)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
26.06.2012, 17:06     Скорость выполнения, а так же работа с дв. файлами
Ответ Создать тему
Опции темы

Текущее время: 00:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru