Понедельник, 25 Ноября 2024, 19:06

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Почему в С++ нет массивов?
shizofrenДата: Среда, 01 Мая 2013, 20:57 | Сообщение # 21
Starting MS-DOS...
Сейчас нет на сайте


Моя команда
XakepДата: Четверг, 02 Мая 2013, 09:45 | Сообщение # 22
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата (Undead)
А что мешает это в С++ сделать? Да и управление памятью там иное.

управление памятью можно по разному реализовать в С++, я лично использую Сишный способ с некоторыми хитростями, а вот использование С++ может убавить производительности, все таки Си более низкоуровневый язык программирования
SnickДата: Четверг, 02 Мая 2013, 11:54 | Сообщение # 23
почетный гость
Сейчас нет на сайте
Цитата

А что мешает это в С++ сделать? Да и управление памятью там иное.


Для новичков лучше C, потому что они хватаются за всё что могут. За классы, за exceptions и в итоге знают только как класс объявить, не имея представления о работе памяти.
NancyWithoutSidДата: Четверг, 02 Мая 2013, 12:30 | Сообщение # 24
был не раз
Сейчас нет на сайте
толстый вброс, а все захавали cry

Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...
JerichoДата: Четверг, 02 Мая 2013, 12:37 | Сообщение # 25
Ubuntu 11.10 user
Сейчас нет на сайте


Уютненькая страничка Ерихона

xxx: Так вы представляете, у него там фрагмент кода в 15 строк повторяется 37 раз. Если вынести в функцию можно сэкономить полтыщи строк!
yyy: это припев.
© Антон Антоненко
RomanNVKZДата: Четверг, 02 Мая 2013, 12:55 | Сообщение # 26
участник
Сейчас нет на сайте




romgermanДата: Четверг, 02 Мая 2013, 13:32 | Сообщение # 27
старожил
Сейчас нет на сайте
Похоже "аффтар" просто хотел развести холивар.
NoterstoneДата: Четверг, 02 Мая 2013, 14:07 | Сообщение # 28
участник
Сейчас нет на сайте
Цитата (RomanNVKZ)
14 Ноября 1996 [ 16 Скорпион ]

crazy
EpsilonДата: Четверг, 02 Мая 2013, 14:59 | Сообщение # 29
частый гость
Сейчас нет на сайте
Кстати народ, вопрос по работе с памятью: какой самый быстрый способ в C++ для работы с двухмерными массивами? (ссылки приветствуются)
XakepДата: Пятница, 03 Мая 2013, 08:30 | Сообщение # 30
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата (Epsilon)
Суть проблемы. Клепаю прогу для обработки изображения. Есть 3 массива double **RVals, **GVals, **BVals; Все 3 активно используются (запись + чтение). После одноразового создания при старте проги размеры не меняют.

при чтении и записи нужно убрать зависимости по данным это раз, а два стараться считывать и записывать из параллельно, т.е. при первом проходе цикла память читается с шагом 32 байта (или 64/128 если оптимизируется исключительно под Athlon) во втором проходе считываются остальные ячейки памяти не кратыне 32 байтам, при таком случае эти ячейки попадут в кэш и будут считываться быстро-быстро )) и лучше тип использовать не double а float, если конечно не нужна изрядная точность, и float при том выравнивается по 4 байтовой границе а double по 8 байтовой. Если интересно почитай книжку "Крис Касперски - техника оптимизации программ, эффективное использование памяти", там все подробно рассказано, очень интеросно читать smile


Сообщение отредактировал Xakep - Пятница, 03 Мая 2013, 08:31
ArchidoДата: Пятница, 03 Мая 2013, 14:23 | Сообщение # 31
Сэнсэй
Сейчас нет на сайте
Цитата (Xakep)
т.е. при первом проходе цикла память читается с шагом 32 байта (или 64/128 если оптимизируется исключительно под Athlon)

Кэш линия сейчас почти во всех современных процессорах - 64 байта, под нее и надо оптимизировать. А так все правильно сказано, плюсану.

Epsilon
Добавлю, что память должна быть варавнена, ибо это временами заставляет процессор делать два обращения к памяти вместо двух и еще "склеивать" результат, что несомненно замедляет работу, а на большинстве RISC процессоров все это вообще упадет. Старайся писать\читать (и выделять, что тоже важно) из\в память как можно более последовательно, а не хаотично, иначе кэша на все не хватит. + Под характер работы определенного алгоритма можно подогнать алгоритм выделения памяти, что сделает работу с ней более последовательной, и получить в итоге небольшой буст.

Как советовал Xakep, тип на float заменить было бы неплохо, ибо в кэш их влезет в два раза больше (16). Но я вижу три RGB массива, а раз это и правда RGB, то для хранения цвета компоненты этой модели достаточно всего одного байта и в кэш линию их поместится в 4 раза больше (и выравнивать ничего не надо), что опять таки положительно скажется на производительности.

Цитата (Undead)
Ты ему ещё рычажками предложи программировать

А неплохая таки идея happy


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Пятница, 03 Мая 2013, 14:28
EpsilonДата: Суббота, 04 Мая 2013, 00:39 | Сообщение # 32
частый гость
Сейчас нет на сайте
Цитата (Xakep)
зависимости по данным это раз

Зависимости? Не понял.

Цитата (Xakep)
если оптимизируется исключительно под Athlon

Делаю исключительно для себя под WinXP.

Цитата (Xakep)
"Крис Касперски - техника оптимизации программ, эффективное использование памяти"

Спасибо. Прочту.

Цитата (Archido)
для хранения цвета компоненты этой модели достаточно всего одного байта

Недостаточно. float подойдёт ибо нужно хранить от 0 до 255+ с шагом не более 0.01. По-любому > 1 байта.



Сообщение отредактировал Epsilon - Суббота, 04 Мая 2013, 00:45
XakepДата: Суббота, 04 Мая 2013, 13:41 | Сообщение # 33
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата (Epsilon)
Зависимости? Не понял.

ну что-то вроде x = arr[x]; до тех пор пока процессор не узнает значение x, он не сможет приступить к загрузке следующей ячейки, т.к. еще не знает ее адресса. А такой код не имеет зависимости: а = arr[x++]; в таком случае процессору известен адресс, он считывает ее и немедленно увеличивает переменну x и, не дожидаясь ответа, отправляет следующий запрос.
King_Of_GamesДата: Четверг, 09 Мая 2013, 18:47 | Сообщение # 34
был не раз
Сейчас нет на сайте
Ужасный язык, слабый dry Паскаль куда проще.

SaiteiДата: Четверг, 09 Мая 2013, 19:18 | Сообщение # 35
старожил
Сейчас нет на сайте
King_Of_Games, проще - не значит лучше.
FirstДата: Четверг, 09 Мая 2013, 19:36 | Сообщение # 36
Уолтер Брайт
Сейчас нет на сайте
Saitei, паскаль вообще нечего не значит wink
zub21Дата: Четверг, 09 Мая 2013, 20:56 | Сообщение # 37
частый гость
Сейчас нет на сайте
Паскаль для нубов, а C/C++ для реальных пацанов:)
FirstДата: Четверг, 09 Мая 2013, 20:58 | Сообщение # 38
Уолтер Брайт
Сейчас нет на сайте
Еще один экземпляр dry Ну тогда иди учить паскаль. Когда же вы успокоитесь клеить пафос.
SaiteiДата: Четверг, 09 Мая 2013, 22:00 | Сообщение # 39
старожил
Сейчас нет на сайте
Цитата (zub21)
Паскаль для нубов, а C/C++ для реальных пацанов:)

Вы переходите за черту приличия, имхо. Все ЯП хороши, все они были созданы кем-то и внесли огромный вклад в историю человечества. Ту или иную вещь можно сделать миллионом разных инструментов. А если кратко, то: "Прямые руки - залог успеха, инструмент тут не при чём. Гвоздь можно забить и голой ладонью, было бы желание".
Осмелитесь ли вы назвать программиста нубом, если он сотворит на паскале то, что в принципе вы не смогли бы на С++? Я считаю, что нет. Вы бы либо завидовали, либо восхищались им (как бы это парадоксально не звучало).
Что у всех в головах, простите конечно дерзость мою, за чушь? Инструмент - не главное. Их же как-то собрали? А всё начиналось с того, что их сделали руки. И очень жаль, что вы не цените историю и так нагло, некрасиво оскорбляете историю, людей, которые до сих пор программируют на этом ЯП.


Сообщение отредактировал Saitei - Четверг, 09 Мая 2013, 22:01
Europe50Дата: Четверг, 09 Мая 2013, 22:17 | Сообщение # 40
был не раз
Сейчас нет на сайте
Ребят, вам что делать нечего? Я разрешу спор : все говно если руки кривые.
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг