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

Критику в студию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Виртуальная функция не хочет перекрываться http://www.cyberforum.ru/cpp-beginners/thread848848.html
Возникла следующая ситуация, имеется базовый класс с виртуальной функцией, и два производных один с ним в одном файле, другой в соседнем, в обоих перекрываю виртуальный метод, ( есть дефолтная реализация оного), в итоге при вызове данного метода от объектов производных классов, только один из них ( тот который в одном файле) перекрывает дефолтный метод, что я делаю не так ?
C++ Алгоритм сортировки Дан одномерный масив. мне в нем нужно отсортировать по возростанию только те числа масива которые простые, а остальные оставить на той же позиции как и были. вот так я смотрю простое число или не int isSimple (int x) { int retVal = 1; int i = 2; while (i<=sqrt((double)x) && retVal==1) http://www.cyberforum.ru/cpp-beginners/thread848840.html
C++ Класс домов и класс улиц для учета поступлений квартплаты. Массив
Задание: вырезано Файл StdAfx.h #pragma once #include "targetver.h" #include <stdio.h>
Решение головоломок C++
Скажи пожалуйста, как должна работать программа, решающая головомку: составить, например, функцию проверки окончания и прогонять все варианты или не знаю, пробывать составить какое-то дерево ходов или мыслить так же как решает человек Хочу написать решатель для головоломки Первые встречные http://www.cross-plus-a.ru/html/voc7abc.htm
C++ Изменение цвета текста http://www.cyberforum.ru/cpp-beginners/thread848819.html
Привет всем. Можно ли в консоле менять цвет ЧАСТИ текста? тоесть выделить одно слово другим цветом например Просто system(color ** ) изменяет всё целиком. В нэте не нашёл нормального ответа на мой вопрос
C++ Операции над натуральными числами Привет всем, я новенький как на форуме так и на в программировании. Начал изучать с++ 2 недели назад,самоучка, так что сильно не кричите)) Задача : Даны три натуральных числа K,L,M (K>=L>=M). Если хотя бы одно из них кратно любому другому, оставить числа без изменения. В противном случае умножить все числа на меньшее из них. #include "iostream" using namespace std; подробнее

Показать сообщение отдельно
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.04.2013, 15:03     Критику в студию
Цитата Сообщение от Tulosba Посмотреть сообщение
еще не значит, что в двумерном не будет нечто подобного
Что-то я не слышал о компайлерских оптимизациях "превращение массива указателей в одномерный массив".

Цитата Сообщение от Tulosba Посмотреть сообщение
Откуда тут следует "значительно эффективнее"?
Для доступа к элементу требуется одно разыменование, а не два, как в случае с массивом указателей. Ну, это копеечная оптимизация, это да.
А вот кеш для линейного массива работает значительно лучше. Учитывая то, что доступ к памяти - наиболее времязатратная операция, получаем значительный выигрыш.
Ну и еще векторизация и префетчинг для линейного массива делается гораздо проще, чем для массива указателей. А это тоже достаточно неслабое ускорение.
В качестве бонуса, менеджер памяти гораздо быстрее поймет, что данная матрица является одним большим объектом, а не кучкой мелких. Это благотворно повлияет на общий перформанс. Ну и еще потребуется чуть-чуть меньше памяти (не понадобится хранить массив указателей).

Итого: получаем более бережное обращение с памятью и кешем в частности, что может дать очень даже неслабое ускорение (в некоторых случаях - в десятки раз).

К тому же, не стоит забывать тезис про "преждевременную оптимизацию".
Выбор подходящего способа хранения данных (равно как и выбор алгоритма) на этапе проектирования сложно назвать преждевременной оптимизацией. Все-таки если не подумать об этом в самом начале, то оптимизация, если она понадобится (а работа с матрицами достаточно часто является "горячей точкой"), будет весьма мучительной - в данном случае, как минимум, придется перепиливать все обращения по индексам.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru