Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Заблокирован

Объявление статических массивов по константе

02.06.2025, 16:56. Показов 3273. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть проблема - в ходе работы над программой нужно будет изменять размеры массивов. Сами массивы - статические, они будут быстрее работать. Но по мере отладки обрабатывающего данные кода - массивы надо будет увеличивать, а с ними и циклы обработки. Встаёт вопрос - как объявить статичный массив...ну хотя-бы по константе, раз уже в ходе выполнения программы - нельзя?
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
TForm1 = class(TForm)
    Button1: TButton;
    MainMenu1: TMainMenu;
    Memo1: TMemo;
    AddObject: TMenuItem;
    AddStaticObject: TMenuItem;
    AddDinamicObject: TMenuItem;
    OpenGLControl1: TOpenGLControl;
    procedure Button1Click(Sender: TObject);
    procedure AddDinamicObjectClick(Sender: TObject);
    procedure Button1ContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure AddStaticObjectClick(Sender: TObject);
    procedure OpenGLControl1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure OpenGLControl1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure OpenGLControl1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure OpenGLControl1MouseWheel(Sender: TObject; Shift: TShiftState;
      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
    procedure OpenGLControl1Paint(Sender: TObject);
    procedure OpenGLControl1Resize(Sender: TObject);
    procedure InitOpenGL;
 //   procedure TrackBar1Change(Sender: TObject);
  private
 
    VectorsMap1: array[0..48, 0..48] of TPoint;
   // Vector: array[0..49, 0..49] of TPoint; // Промежуточный массив векторов, испольщуемый только для вычислений и вывода информации о потоках на экран
    GridMap: array[0..49, 0..49] of Byte; // Массив содержимого ячеек сетки (0-255), среда=0, статические объекты 100+, динамические 200+
    GridValuesStatic: array of array[0..49, 0..49] of TPoint;//массив нормалей поверхностей статических объектов
    GridValuesDinamic: array of array[0..49, 0..49] of TPoint;//массив нормалей поверхностей динамических объектов
    //переменные экономии памяти
    wanBuffer:TPoint; //одиночный буфер
    lineBuffer: array [0..48] of TPoint;//линейный буфер
    AngleX, AngleY: Single;
    LastX, LastY: Integer;
    CamX, CamY, CamZ, CamX1, CamY1, CamZ1: Single; // Позиция камеры
   StaticObject, DinamicObject:integer;
    procedure LogMessage(const Msg: string); // Процедура для логирования
  public
    { Public declarations }
  end;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2025, 16:56
Ответы с готовыми решениями:

Передача через нетипизированный параметр как динамических, так и статических (разного объёма) массивов
Необходимо написать процедуру, способную выводить двумерные динамические и статические массивы...

Обработка одномерных статических массивов-Delphi7
В массиве А, содержащем n-элементов, найти первый элемент, равный R и его номер, если такого нет,...

Переход от статических массивов к динамическим (индексирование с 1-цы)
Здравствуйте уважаемые форумчане! Я занимаюсь тех поддержкой древней системы написанной через одно...

30
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
03.06.2025, 21:19
Студворк — интернет-сервис помощи студентам
Hrethgir, на какой первой секунде?
0
Заблокирован
03.06.2025, 21:25  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Hrethgir, на какой первой секунде?
Дело в том, что у меня FPS меняется пока не нажму кнопку 3.


Про делать мозг:
Цитата Сообщение от quwy Посмотреть сообщение
Блин, народ, не делайте мне мозг, пожалуйста.
статический массив обращение
Assembler
1
2
3
4
5
6
/home/andrei-y/Documents/Lazarus/Projects/AzAtom/unit1.pas:51  gi1 := sa[x];
0000000000465B5C 488B45F0                 mov rax,[rbp-$10]
0000000000465B60 8B55EC                   mov edx,[rbp-$14]
0000000000465B63 488D0DF6137700           lea rcx,[rip+$007713F6]
0000000000465B6A 8B8490E8070000           mov eax,[rdx*4+rax+$000007E8]
0000000000465B71 8901                     mov [rcx],eax
динамический массив обраащение
Assembler
1
2
3
4
5
6
7
/home/andrei-y/Documents/Lazarus/Projects/AzAtom/unit1.pas:69  gi1 := da[x];
0000000000465C34 488B55F0                 mov rdx,[rbp-$10]
0000000000465C38 488B92E8070003           mov rdx,[rdx+$030007E8]
0000000000465C3F 48634DEC                 movsxd rcx,dword ptr [rbp-$14]
0000000000465C43 488D3516137700           lea rsi,[rip+$00771316]
0000000000465C4A 8B148A                   mov edx,[rcx*4+rdx]
0000000000465C4D 8916                     mov [rsi],edx
Этого - достаточно.
Сам код процедур я изменил
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
procedure TForm1.Button1Click(Sender: TObject);
var
  x: integer;
begin
  UsrStop := false;
  repeat
    for x := 0 to Length(sa) -1 do
    begin
      gi1 := sa[x];
      sa[x] := gi1;
    end;
    Inc(fps);
    Application.ProcessMessages;
  until UsrStop;
 
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
  x: integer;
begin
  UsrStop := false;
  SetLength(da, 12*1024*1024);
  repeat
    for x := 0 to Length(da) -1 do
    begin
      gi1 := da[x];
      da[x] := gi1;
    end;
    Inc(fps);
    Application.ProcessMessages;
  until UsrStop;
 
end;
, так как счёл что для сравнения там много лишнего.
20 процентов к коду статического, ни больше ни меньше, это чисто в коде, с моими нубознаниями ассемблера. Скорость объективно измерить так нельзя, так как проц кэширует и делает много того чего ему не указывают.
Но так в среднем - со статическим 94, с динамическим 83, что там делает проц - тёмный лес, известно только его производителю: кэширует, слайсит, чего-том ещё - не важно. Имеет смысл читать ассемблер.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
03.06.2025, 21:51
Цитата Сообщение от Hrethgir Посмотреть сообщение
Дело в том, что у меня FPS меняется пока не нажму кнопку 3.
При нажатии работа начинается где-то с середины секунды, так что, первое значение будет неправильным. Смотреть можно уже со второй секунды. Ну а значение постоянно меняется потому, что система многозадачная, и другие процессы тоже выполняются в системе.
1
Native x86
Эксперт Hardware
 Аватар для quwy
6860 / 3792 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
04.06.2025, 01:34
Цитата Сообщение от Hrethgir Посмотреть сообщение
Этого - достаточно.
6 команд против 5? А если с данными делать хоть что-то осмысленное, это будет 51 (501) команда против 50 (500).
Это вообще ни о чем.

Вся разница между статикой и динамикой -- в одном разименовании указателя, коим является переменная динамического массива. Давайте вообще от указателей теперь откажемся, это же так медленно!
0
Native x86
Эксперт Hardware
 Аватар для quwy
6860 / 3792 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
04.06.2025, 01:52
P.S. Кстати, при внимательном взгляде на мой замер чуть выше можно обнаружить, что статический массив обрабатывался дольше динамического. Я думал, артефакт многозадачной среды исполнения, но нет! Запускал много раз, менял местами блоки кода обработки массивов. Динамика обрабатывается быстрее не смотря на одну "лишнюю" команду.

Статика:

Динамика:
0
Native x86
Эксперт Hardware
 Аватар для quwy
6860 / 3792 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
04.06.2025, 02:04
Так что вот какая загогулина. Для статики компилятор использует длинную форму mov eax, [array_item_addr], которая оказалась намного медленнее, чем короткая форма этой же команды, которая извлекает элемент из динамического массива. А лишний mov rcx, [dyn_array_var] по-видимому съедается процессорным оптимизатором.
0
Заблокирован
04.06.2025, 08:12  [ТС]
Кому нужно это гадание о способностях процессора закрытого типа? Есть код и одна лишняя команда - факт, осязаемо, а гадать о чем-то непонятном - никому не интересно. Даже если процессор станет открытого типа, то всё равно одна команда лишняя, так как никому не нужны непредсказуемые процессоры, с агитацией за непредсказуемость кода - это наверное только в убыль: потом начнется - "учёные обнаружили новые свойства бита" - я это четко представляю себе на экране телевизора и в новостях в сети, в топку эти свойства, шаманизм и прочую белеберду.
0
Native x86
Эксперт Hardware
 Аватар для quwy
6860 / 3792 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
04.06.2025, 19:30
Цитата Сообщение от Hrethgir Посмотреть сообщение
Кому нужно это гадание о способностях процессора закрытого типа?
Вообще-то это результат бенчмарка, показвающий, что динамический массив работает быстрее статического. Это факт, а не теоретические рассуждения.

Цитата Сообщение от Hrethgir Посмотреть сообщение
Есть код и одна лишняя команда - факт
Одна лишняя быстрая команда с одной стороны, и другая более медленная, пусть и не лишняя, -- с другой. Не все команды равноценны, и мой результат это доказывает.

Цитата Сообщение от Hrethgir Посмотреть сообщение
так как никому не нужны непредсказуемые процессоры
С разморозкой. Последний "предсказуемый" процессор архитектуры ia32 -- это 486 (или IDT WinChip, если вспоминать экзотику). У всех последующих время выполнения каждой команды сильно зависит от контекста.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
04.06.2025, 20:35
Цитата Сообщение от quwy Посмотреть сообщение
показвающий, что динамический массив работает быстрее статического.
Ещё одно различие заметил - я компилировал в 32 бита, а у вас 64 бита. Выходит, и это тоже влияет.
1
47 / 39 / 10
Регистрация: 25.02.2025
Сообщений: 84
06.06.2025, 17:07
Разрешите представить свои результаты тестирования скорости работы с массивами.
Массивы тестировал на задаче сортировки методом прямого выбора (straight selection), так как этот метод интенсивно работает с массивом, переставляя элементы внутри массива.

Массивы использовал 4-х видов:
1. Статический (array[1..100]);
2. Динамический фиксированной длины (^array[1..100]);
3. Динамический произвольной длины (getmem);
4. Массив-объект (array of).

Тестовая программа компилировалась для выпуска (release), поэтому в ней нет проверок времени выполнения. Команда компиляции такая:
Code
1
fpc -Mobjfpc "-oarrsp" -O2 -Sg -Sh -Si -Sv -Sy -Xs arrsp.pas && strip arrsp
Тестовый массив из 100 тысяч целых чисел. Система - Debian 12 x86_64.

Результаты тестирования (время сортировки):
Кликните здесь для просмотра всего текста
Запуск 1.
Статический массив фиксированной длины 100000
Продолжительность расчёта: 12.644 секунд.


Динамический массив фиксированной длины (^arrtype) 100000
Продолжительность расчёта: 12.818 секунд.


Динамический массив произвольной длины (GetMem) 100000
Продолжительность расчёта: 12.642 секунд.


Динамический массив произвольной длины (array of) 100000
Продолжительность расчёта: 12.634 секунд.

-----------------------------------
Запуск 2.
Статический массив фиксированной длины 100000
Продолжительность расчёта: 12.641 секунд.


Динамический массив фиксированной длины (^arrtype) 100000
Продолжительность расчёта: 12.756 секунд.


Динамический массив произвольной длины (GetMem) 100000
Продолжительность расчёта: 12.641 секунд.


Динамический массив произвольной длины (array of) 100000
Продолжительность расчёта: 12.634 секунд.

-----------------------------------
Запуск 3.
Статический массив фиксированной длины 100000
Продолжительность расчёта: 12.643 секунд.


Динамический массив фиксированной длины (^arrtype) 100000
Продолжительность расчёта: 12.818 секунд.


Динамический массив произвольной длины (GetMem) 100000
Продолжительность расчёта: 12.642 секунд.


Динамический массив произвольной длины (array of) 100000
Продолжительность расчёта: 12.632 секунд.
----------------------------------

Что можно сказать?
Статический массив и динамический через getmem работают одинаково по скорости.
Динамический через new - отстатёт по скорости на 0,9 - 1,37 процента из-за необходимости разыменования указателя.
Динамический через array of - самый быстрый (но всего на мизерные 0,06 - 0,09 процента).

Кликните здесь для просмотра всего текста

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
program ArraySpeed;
// тестирование на скорость сортировки различных массивов
//  методом прямого выбора
//{$define dfnPrintArray}
 
uses SysUtils;
const ArrLen=100000; 
//const ArrLen=10; 
const ElementMaxValue=System.MaxLongint;
//const ElementMaxValue=System.MaxInt;
type StaticArray=array [1..ArrLen] of longint;
var test_array:StaticArray;
 
var arr1:StaticArray;
var arr2:^StaticArray;
var arr3:^longint;
var arr4:array of longint;
 
procedure FillTestArray();
var
    i:longint;
begin
    // заполняем случайными числами
    System.Randomize();
    for i:=System.Low(test_array) to System.High(test_array)
    do begin
        test_array[i]:=System.Random(ElementMaxValue);
    end;
end;
 
procedure SortStaticArray();
var
    start_tm, stop_tm : System.TDateTime;
    start_ms, stop_ms : comp;
    dur : double;
    el:longint;
    i,j,k:longint;
begin
    // копируем тестовый массив в рабочий массив
    arr1:=test_array;
    System.WriteLn('Статический массив фиксированной длины ',ArrLen);
{$ifdef dfnPrintArray}
    System.WriteLn('Перед началом сортировки:');
    for el in arr1
    do begin
        System.Write(el,' ');
    end;
    System.WriteLn();
{$endif}
    start_tm := SysUtils.Now();
 
    for i:=1 to ArrLen-1
    do begin
        k:=i;
        el:=arr1[i];
        for j:=i+1 to ArrLen
        do begin
            if arr1[j] < el
            then begin
                k:=j;
                el:=arr1[k];
            end;
        end;
        arr1[k]:=arr1[i];
        arr1[i]:=el;
    end;
 
    stop_tm := SysUtils.Now();
    start_ms := TimeStampToMSecs( DateTimeToTimeStamp( start_tm ) );
    stop_ms := TimeStampToMSecs( DateTimeToTimeStamp( stop_tm ) );
    dur := double( stop_ms - start_ms ) * 1.0e-3;
    System.WriteLn('Продолжительность расчёта: ', dur:10:3, ' секунд.' );
    System.WriteLn();
{$ifdef dfnPrintArray}
    System.WriteLn('После сортировки:');
    for el in arr1
    do begin
        System.Write(el,' ');
    end;
    System.WriteLn();
{$endif}
    System.WriteLn();
end;
 
procedure SortDynamicArray1();
var
    start_tm, stop_tm : System.TDateTime;
    start_ms, stop_ms : comp;
    dur : double;
    el:longint;
    i,j,k:longint;
begin
    System.New(arr2);
    try
        // копируем тестовый массив в рабочий массив
        arr2^:=test_array;
        System.WriteLn('Динамический массив фиксированной длины (^arrtype) ',ArrLen);
    {$ifdef dfnPrintArray}
        System.WriteLn('Перед началом сортировки:');
        for el in arr2^
        do begin
            System.Write(el,' ');
        end;
        System.WriteLn();
    {$endif}
        start_tm := SysUtils.Now();
 
        for i:=1 to ArrLen-1
        do begin
            k:=i;
            el:=arr2^[i];
            for j:=i+1 to ArrLen
            do begin
                if arr2^[j] < el
                then begin
                    k:=j;
                    el:=arr2^[k];
                end;
            end;
            arr2^[k]:=arr2^[i];
            arr2^[i]:=el;
        end;
 
        stop_tm := SysUtils.Now();
        start_ms := TimeStampToMSecs( DateTimeToTimeStamp( start_tm ) );
        stop_ms := TimeStampToMSecs( DateTimeToTimeStamp( stop_tm ) );
        dur := double( stop_ms - start_ms ) * 1.0e-3;
        System.WriteLn('Продолжительность расчёта: ', dur:10:3, ' секунд.' );
        System.WriteLn();
    {$ifdef dfnPrintArray}
        System.WriteLn('После сортировки:');
        for el in arr2^
        do begin
            System.Write(el,' ');
        end;
        System.WriteLn();
    {$endif}
    finally
        System.Dispose(arr2);
        arr2:=nil;
    end;
    System.WriteLn();
end;
 
procedure SortDynamicArray2();
var
    start_tm, stop_tm : System.TDateTime;
    start_ms, stop_ms : comp;
    dur : double;
    el:longint;
    i,j,k:longint;
begin
    System.GetMem(arr3, ArrLen*sizeof(longint));
    try
        // копируем тестовый массив в рабочий массив
        for i:=System.Low(test_array) to System.High(test_array)
        do begin
            arr3[i-1]:=test_array[i];
        end;
 
        System.WriteLn('Динамический массив произвольной длины (GetMem) ',ArrLen);
    {$ifdef dfnPrintArray}
        System.WriteLn('Перед началом сортировки:');
        for i:=0 to ArrLen-1
        do begin
            System.Write(arr3[i],' ');
        end;
        System.WriteLn();
    {$endif}
        start_tm := SysUtils.Now();
 
        for i:=0 to ArrLen-2
        do begin
            k:=i;
            el:=arr3[i];
            for j:=i to ArrLen-1
            do begin
                if arr3[j] < el
                then begin
                    k:=j;
                    el:=arr3[k];
                end;
            end;
            arr3[k]:=arr3[i];
            arr3[i]:=el;
        end;
 
        stop_tm := SysUtils.Now();
        start_ms := TimeStampToMSecs( DateTimeToTimeStamp( start_tm ) );
        stop_ms := TimeStampToMSecs( DateTimeToTimeStamp( stop_tm ) );
        dur := double( stop_ms - start_ms ) * 1.0e-3;
        System.WriteLn('Продолжительность расчёта: ', dur:10:3, ' секунд.' );
        System.WriteLn();
    {$ifdef dfnPrintArray}
        System.WriteLn('После сортировки:');
        for i:=0 to ArrLen-1
        do begin
            System.Write(arr3[i],' ');
        end;
        System.WriteLn();
    {$endif}
    finally
        System.FreeMem(arr3);
        arr3:=nil;
    end;
    System.WriteLn();
end;
 
procedure SortDynamicArray3();
var
    start_tm, stop_tm : System.TDateTime;
    start_ms, stop_ms : comp;
    dur : double;
    el:longint;
    i,j,k:longint;
begin
    System.SetLength(arr4, ArrLen);
    // копируем тестовый массив в рабочий массив
    for i:=System.Low(test_array) to System.High(test_array)
    do begin
        arr4[i-1]:=test_array[i];
    end;
 
    System.WriteLn('Динамический массив произвольной длины (array of) ',ArrLen);
{$ifdef dfnPrintArray}
    System.WriteLn('Перед началом сортировки:');
    for i:=0 to ArrLen-1
    do begin
        System.Write(arr4[i],' ');
    end;
    System.WriteLn();
{$endif}
    start_tm := SysUtils.Now();
 
    for i:=0 to ArrLen-2
    do begin
        k:=i;
        el:=arr4[i];
        for j:=i to ArrLen-1
        do begin
            if arr4[j] < el
            then begin
                k:=j;
                el:=arr4[k];
            end;
        end;
        arr4[k]:=arr4[i];
        arr4[i]:=el;
    end;
 
    stop_tm := SysUtils.Now();
    start_ms := TimeStampToMSecs( DateTimeToTimeStamp( start_tm ) );
    stop_ms := TimeStampToMSecs( DateTimeToTimeStamp( stop_tm ) );
    dur := double( stop_ms - start_ms ) * 1.0e-3;
    System.WriteLn('Продолжительность расчёта: ', dur:10:3, ' секунд.' );
    System.WriteLn();
{$ifdef dfnPrintArray}
    System.WriteLn('После сортировки:');
    for i:=0 to ArrLen-1
    do begin
        System.Write(arr4[i],' ');
    end;
    System.WriteLn();
{$endif}
    System.WriteLn();
end;
 
 
begin
        // заполняем массив тестовыми данными
    FillTestArray();
 
    SortStaticArray();
    SortDynamicArray1();
    SortDynamicArray2();
    SortDynamicArray3();
 
end.
Вложения
Тип файла: zip arrspeed.zip (2.0 Кб, 0 просмотров)
3
Заблокирован
07.06.2025, 14:24  [ТС]
Цитата Сообщение от NotAbug Посмотреть сообщение
Что можно сказать?
я скажу то-же что и раньше - там 5 команд, а там шесть. То что нивелирует архитектура процессора - с лихвой сожрут съедят энергозатраты. Энергозатраты так-же важны как и скорость, поэтому достаточно вполне анализа кода на ассемблере. Энергозатраты. Если надо быстро - всё равно медленнее, итого - платим энергозатрами за шик с динамическими массивами, потому что если-бы остро стоял вопрос скорости - использовали-бы статические, так как даже микроскопически, но всё равно быстрее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2025, 14:24

Задача: "Программирование одномерных статических массивов"
Исправить код программы или дополнить. Ввести элементы одномерного массива длиной 40 как...

Двумерный массив с переменной длиной строки в константе
Как объявить константу, являющуюся многомерным массивом, элементами которого являются подмассивы...

При появлении слова,которое задано в константе ,программа должна выполнить определенное действие
При появлении слова,которое задано в константе ,программа должна выполнить определенное действие и...

Динамический список статических очередей
Помогите пожайлуста с задачкой. Само задание: Цель работы: разработка набора взаимосвязанных...

Использование памяти в статических массивах.
Допустим, мы объявили массив статический из огромного числа элементов (допустим, 134217728). Для...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru