Код: Выделить всё
Unlike a C-style array, it doesn't decay to T* automaticallyКод: Выделить всё
Unlike a C-style array, it doesn't decay to T* automaticallyКод: Выделить всё
Unlike a C-style array, it doesn't decay to T* automaticallyКод: Выделить всё
void f1(std::array<int,5> a){}
void f2(){ std::array<int,5> a; }
void f3(){ int a,b,c,d,e; }
void f4(){ struct {int a,b,c,d,e;} v; }
-- но это неправда про массив... ни по какому указателю он не передается))) -- выше я указал как он обязан восприниматься.Массив передается в функцию по указателю, поэтому просто обязан быть в памяти. А локальным переменным функции ничто не мешает быть регистровыми, что и использует компилятор.
-- но это неправда про массив... ни по какому указателю он не передается)))[/uquote]Массив передается в функцию по указателю, поэтому просто обязан быть в памяти. А локальным переменным функции ничто не мешает быть регистровыми, что и использует компилятор.
И даже указал, как это можно увидеть:safocl писал(а):Если при компиляции целиком это и может быть заинлайнено или как-то оптимизировано, то в случае библиотечной функции, С++ ABI не позволяет передать массив, иначе, чем по указателю.
Вы вообще в курсе, что такое ABI?ПростоНуб писал(а):соберите её с __declspec(dllexport)
LX7 1 core at 240MHz: 613.86 CoreMarkПростоНуб писал(а):Так что имея почти двукратный выигрыш в CoreMark, STM32H7 вполне может проиграть.
LX7 1 core at 240MHz: 613.86 CoreMarkПростоНуб писал(а):Так что имея почти двукратный выигрыш в CoreMark, STM32H7 вполне может проиграть.
А функция поиска k-го элемента, даже без сортировки, там выглядит так:Можно практически убедиться, что функция median3, использующая max и min (компилируемые один-в-один в машинные инструкции вроде vpmaxsd и vpminsd), действительно примерно вдвое быстрее, чем использующая if.
Код: Выделить всё
subroutine i4vec_frac ( n, a, k, frac )
implicit none
integer ( kind = 4 ) n
integer ( kind = 4 ) a(n)
integer ( kind = 4 ) frac
integer ( kind = 4 ) i
integer ( kind = 4 ) iryt
integer ( kind = 4 ) ix
integer ( kind = 4 ) j
integer ( kind = 4 ) k
integer ( kind = 4 ) left
integer ( kind = 4 ) t
if ( n <= 0 ) then
write ( *, '(a)' ) ' '
write ( *, '(a)' ) 'I4VEC_FRAC - Fatal error!'
write ( *, '(a,i8)' ) ' Illegal nonpositive value of N = ', n
stop
end if
if ( k <= 0 ) then
write ( *, '(a)' ) ' '
write ( *, '(a)' ) 'I4VEC_FRAC - Fatal error!'
write ( *, '(a,i8)' ) ' Illegal nonpositive value of K = ', k
stop
end if
if ( n < k ) then
write ( *, '(a)' ) ' '
write ( *, '(a)' ) 'I4VEC_FRAC - Fatal error!'
write ( *, '(a,i8)' ) ' Illegal N < K, K = ', k
stop
end if
left = 1
iryt = n
do
if ( iryt <= left ) then
frac = a(k)
exit
end if
ix = a(k)
i = left
j = iryt
do
if ( j < i ) then
if ( j < k ) then
left = i
end if
if ( k < i ) then
iryt = j
end if
exit
end if
!
! Find I so that IX <= A(I).
!
do while ( a(i) < ix )
i = i + 1
end do
!
! Find J so that A(J) <= IX.
!
do while ( ix < a(j) )
j = j - 1
end do
if ( i <= j ) then
t = a(i)
a(i) = a(j)
a(j) = t
i = i + 1
j = j - 1
end if
end do
end do
return
endЯ писал про STM32H7 работающий на частоте 550MHz, без разницы какой. И он даже не самый быстрый, есть и 600MHz(3174 CoreMark).ПростоНуб писал(а):Во-первых, Вы писали STM32H7, а вовсе не STM32H730.
ESP32-S3 - медленный, это общеизвестно. Я брал для него данные из Datasheet и они там даже больше, чем в других источниках. При одинаковой частоте он даже M4 проигрывает, что уж про M7 говорить. Для H7 на офсайте написано.ПростоНуб писал(а):Во-вторых, там в разных источниках по разному. Для STM32H730 я и 3324 встречал, а для ESP32-S3 официальные данные приводятся для выполнения кода из флеша, который доступен только по SPI и кешируется в IRAM. Установка CONFIG_ESPTOOLPY_FLASHMODE в QIO вместо DIO в некоторых случаях приводит к удваиванию производительности. Естественно, если вместо родного флеш модуля подключить внешний по четырем, а не двум SPI каналам.
Нашел на глобальном али эту плату, читаем ноутсы:ПростоНуб писал(а):Пререлиз был больше года назад вообще-то. Купить его проблем не составляет, только цена кусается
https://aliexpress.ru/item/100500746437 ... 0862494084
или
https://aliexpress.ru/item/1005007730586862.html
Скорее всего проблемы с производством, так как США Китай отлучили не только от ASML, но и от TSMC. Но это уже к обсуждаемому вопросу отношения не имеет.
Что и требовалось доказать )1.The current chip version is V0.1. The functionalities of USB Serial JTAG are not available, which will be supported in the future chip revision.
2. The ADC on current samples is not calibrated, so the ADC calibration functionality is not available yet. The ADC will be calibrated on chips for mass production orders.
На нормальном али плата от WeAct на H723VGT6 стоит $11.65, отдельно STM32H723ZGT6 - $3.96, STM32H750VBT6 -$3, периодически падает почти до $2 )ПростоНуб писал(а):А вот STM32H730 там же мне найти не удалось. Ну если не считать этого кота в мешке за тысячу баксов https://aliexpress.ru/item/100500802817 ... 3311226934
По факту я опять оказался прав когда предположил, что речь идет об инженерных сэмплах, а вы опять ошиблись, когда решили, что скорее всего проблемы с производством )ПростоНуб писал(а):Для целей сравнения производительности без отладки по USB и без ADC вполне можно обойтись.