А в памяти моей такая скрыта мощь...

User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: А в памяти моей такая скрыта мощь...

Post by Dmitry67 »

https://www2.cs.duke.edu/courses/cps104 ... he-sw2.pdf

См страницу 10
Правда там чуть другой пример с перемножением матриц
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: А в памяти моей такая скрыта мощь...

Post by Dmitry67 »

Кстати задумался

В C# тоже есть оператор запятая
Но есть и двумерные массивы
Налицо двусмысленность синтаксиса
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
fleshold
Уже с Приветом
Posts: 143
Joined: 29 Apr 2014 12:22

Re: А в памяти моей такая скрыта мощь...

Post by fleshold »

tessob wrote: 14 Feb 2018 11:41
fleshold wrote: 14 Feb 2018 08:22Ну точно не в 20, а наверное раза в полтора, ну может в 2.
Я вообще не понимаю почему должна возникнуть даже двукратная разница. У нас же по идее при аллокации памяти под n-мерный массив сразу должна выделяться вся память. Соответственно, при изменении значения одного из элементов нам просто нужно найти указатель на первую ячейку в выделенном пространстве. Чего я упускаю?
Это как бы школьная программа :oops: , как в памяти массивы располагаются и что последовательно друг за другом их элементы читать "быстрее". В первом случае читаем последовательно, во втором нет. Конечно будет "медленней", но не в 15-20 раз как говорит Dmitry67. 146%. Проверь в своём компиляторе.
Dmitry67 wrote: 14 Feb 2018 10:57 Значит с фортраном перепутал)
В Фортране матрицы хранятся не так как массивы массивов в С\С++. Поэтому, подозреваю, что по второму варианту будет быстрее.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Re: А в памяти моей такая скрыта мощь...

Post by Dmitry67 »

Блин, вы, вообще представляете во сколько раз L3/L2 быстрее основной памяти?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
OtherSide
Уже с Приветом
Posts: 15798
Joined: 01 Mar 2008 15:14

Re: А в памяти моей такая скрыта мощь...

Post by OtherSide »

Dmitry67 wrote: 14 Feb 2018 20:00 Кстати задумался

В C# тоже есть оператор запятая
Но есть и двумерные массивы
Налицо двусмысленность синтаксиса
никакой двусмысленности, там разный смысл совершенно
fleshold
Уже с Приветом
Posts: 143
Joined: 29 Apr 2014 12:22

Re: А в памяти моей такая скрыта мощь...

Post by fleshold »

Dmitry67 wrote: 14 Feb 2018 20:00 Кстати задумался

В C# тоже есть оператор запятая
Но есть и двумерные массивы
Налицо двусмысленность синтаксиса
Я не видел С# лет 10, да и поработать с ним слава богу много не пришлось. , запятая в шарпе это просто "сепаратор", а не оператор как в С\С++\ЖабаСкрпт. В шарпе насколько знаю есть три типа массива - одномерный, многомерный, и нерегулярный (массив массивов которые могут быть разной длины). Но большего сказать не могу. Да и сишарписты не любят массивы насколько наслышан от знакомых так и малознакомых использующий этот язык. Вот например мнение мембера of the C# language design team -
https://blogs.msdn.microsoft.com/ericli ... t-harmful/ Хотя может за 10 лет всё изменилось и с массивами всё ОК там и запятую добавили. Не в курсе.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: А в памяти моей такая скрыта мощь...

Post by Мальчик-Одуванчик »

Dmitry67 wrote: 15 Feb 2018 09:10 Блин, вы, вообще представляете во сколько раз L3/L2 быстрее основной памяти?
Хде? Я вот откомпилировал Ваш пример на арме и нифига.
User avatar
AndreyT
Уже с Приветом
Posts: 3003
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: А в памяти моей такая скрыта мощь...

Post by AndreyT »

OtherSide wrote: 14 Feb 2018 09:56 в смысле. В c/с++ только одномерные массивы
С такой точки зрения во всех языках программирования существуют только одномерные массивы, ибо память в компьютере одномерна.
Best regards,
Андрей

Return to “Вопросы и новости IT”