Питання робота з великими рядками

Ніяк. Що, Ви тут зібралися оптимізувати?
Гінці за макросекундамі.

Якщо рядок буде не втрутитися (Близько 500 символів вміщує компілятор. Точного значення не скажу.)
Скористайтеся методом від Daniel Cortez

А чи можна якось скоротити розмір виділеної пам'яті? На виклик функції виділяється порядком 740 байт, якщо врахувати планку в 16384 байт, то значення вельми вражає.

Повідомлення від Untonyst

Якщо функція викликається один раз, то краще код безпосередньо брати (НЕ stock)

Функція викликається порядком 5-ти разів

І слідом питання
А, що буде якщо спробувати не допустити баг формату під час стиснення рядків? За результатами компіляції - пам'яті виділяється на третину меньше.Да і в грі начебто все працює на відмінно

Функції format і printf не вміють правильно працювати з упакованими рядками (як в форматної рядку, так і в форматується параметрах).
Що не так вже й дивно, якщо врахувати, що до цих функцій торкався куй.

  1. Більш ваш код оптимізувати не можна, але, проте можна «хімічити» з асемблером, але це навряд чи щось змінить.
  2. Другий запропонований варіант дійсно менше займає пам'яті, адже функція strcat перетворює рядок у «упакований» вид, але, проте ви викликаєте велику кількість функцій, що не дуже раціонально.

Висновок: Ваш перший варіант буде на багато продуктивніше, ніж другий.

Повідомлення від VVWVV

  1. Більш ваш код оптимізувати не можна, але, проте можна «хімічити» з асемблером, але це навряд чи щось змінить.
  2. Другий запропонований варіант дійсно менше займає пам'яті, адже функція strcat перетворює рядок у «упакований» вид, але, проте ви викликаєте велику кількість функцій, що не дуже раціонально.

Висновок: Ваш перший варіант буде на багато продуктивніше, ніж другий.

А як взагалі підраховується розмір стека?
Помітив, що не завжди при створення нового масиву змінюється розмір стека.
Ось наприклад якщо створювати масив в окремо виведеному стоці, то розмір стека увелічівается.А якщо ж масив оголосити в команді, (dc_cmd) то розмір стека залишається не зміниться (але знову таки: раз на раз не пріходіться.Одін раз змінюється, один раз немає

Повідомлення від VVWVV

  1. Другий запропонований варіант дійсно менше займає пам'яті, адже функція strcat перетворює рядок у «упакований» вид, але, проте ви викликаєте велику кількість функцій, що не дуже раціонально.

Висновок: Ваш перший варіант буде на багато продуктивніше, ніж другий.

А якщо зменшити кількість викликів функції strcat?


Я так розумію, що це нічого не змінить, і продуктивніше все також буде перший варіант

Шукав я собі книгу: "Чарльз Петцольд: Код. Таємний мову інформатики" в паперовому варіанті, так і не знайшов.
Гарна книга. Але, навряд чи там є опис роботи компіляторів.

Так само я б порадив: Досконалий код - Стів Макконнелл
Книга, дуже хороша. Описано більшість алгоритмів. Робота циклів, операторів, etc.


Pawn - не найкращий мову програмування. Вивчаючи його Ви вивчаєте погану практику програмування. У Pawn використовується методи Сі89 (близько того).
Якщо заради захоплення - то можна вивчати Pawn. Якщо Ви хочете продовжити своє життя з "комп'ютером" - то варто вибрати, що то важче. Я б на цей трапилося порадив: Lua. Squirrel. Python. node.js

І на цьому можна програмувати під SA-MP, звичайно треба знати як працює Pawn Virtual Machine (PVM)


Але при це всім, треба розуміти, що підтримку плагінів навряд чи введуть. У те, що трапилося оновленні серверної частини (Оновлення SA-MP від ​​розробників), Вам доведеться самостійно додавати функції, який було анонсовано.

На рахунок скроневої, циферок, букв: Це assembler. На ранніх стадіях розробки - Вам це буде не потрібно. Зараз мало хто пише assembler, але лістинг знати бажано. Майже, всі програми переводяться в assembler

Value your freedom or you will lose it, teaches history. "Do not bother us with politics," respond those who do not want to learn. (C) Richard Stallman

Схожі статті