Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 27.10.2023, 21:14
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Движок ничего не оптимизирует просто так.
Браузер ленив. Функцию после определения он хранит в виде AST. Не компилирует в байткод сразу. А зачем на это тратить время? Может ее никогда не вызовут. При первом вызове и скомпилирует в байткод. (Файрфокс раньше (как сейчас - не знаю) даже при первом вызове не компилил, а делал интерпретацию по AST, (а зачем компилить? может ее только один раз и вызовут?)
Про оптимизацию в ассемблерный код в браузере никто и не вспоминает. Оптимизируется вся функция целиком. И только если она достаточно "горячая" - вызывается част и много (ну при соблюдении еще некоторых условий) Много это - несколько тысяч раз. Есть разница одна функция вызовется несколько тысяч раз - будет оптимизирована. 100 одинаковых функций вызовутся по 100 раз - ни одна не будет оптимизирована.
Сообщение от ruslan_mart
В современном фронте разве кто-то парится насчет создания лишних функций в памяти?
Наверно это от фронтендера зависит, что бы потом не ломать голову, а почему мой фронт на бюджетном смартфоне не тянет.
Ответить с цитированием
  #12 (permalink)  
Старый 27.10.2023, 21:32
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от ruslan_mart
Array.from вторым параметром тоже анонимку плодит, так-то, еще и в 3 степени.
Они локальны внутри функции. Функция отработала и они исчезли.
Ответить с цитированием
  #13 (permalink)  
Старый 28.10.2023, 07:36
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

Сообщение от firep91613
3-х мерная матрица
А зачем это надо? Для обучения? Если нет, то в браузере есть интерфейсы геометрии, там есть матрица - DOMMatrix.
Ответить с цитированием
  #14 (permalink)  
Старый 28.10.2023, 12:55
Аспирант
Отправить личное сообщение для firep91613 Посмотреть профиль Найти все сообщения от firep91613
 
Регистрация: 24.10.2023
Сообщений: 58

Сообщение от ruslan_mart Посмотреть сообщение
Наверное как-то так

function prettyPrint(data) {
  console.log(JSON.stringify(data));
}

class Matrix3D {
  constructor(len) {
    this.x = len.x;
    this.y = len.y;
    this.z = len.z;
    this.init();
  }
  
  init() {
    const { x, y, z } = this;
    
    this.buffer = Array.from(Array(z), (_, i) => {
      return Array.from(Array(y), (_, j) => {
        return Array.from(Array(x), (_, k) => {
          return (j * x + k + 1) + (((x * y * z) / z) * i);
        });
      });
    });
  }
  
  set(coords, value) {
    this.buffer[coords.z][coords.y][coords.x] = value;
  }
  
  get(coords) {
    return this.buffer[coords.z][coords.y][coords.x];
  }
}

const matrix = new Matrix3D({x: 2, y: 2, z: 2});
matrix.init();
matrix.set({x: 1, y: 1, z: 1}, 10);

prettyPrint(matrix.get({x: 1, y: 1, z: 1}));
prettyPrint(matrix.buffer);
Благодарю, то что нужно!
Сообщение от voraa Посмотреть сообщение
А это ((x * y * z) / z) не равно x*y ?
Да, чет перемудрил...
Сообщение от Rise Посмотреть сообщение
А зачем это надо? Для обучения? Если нет, то в браузере есть интерфейсы геометрии, там есть матрица - DOMMatrix.
Для обучения.

Всем спасибо. Вопросов больше нет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Квадратная матрица, максимальные значения по параллельным побочной диагонали Retro_1477 Общие вопросы Javascript 4 05.11.2019 18:34
Матрица javascript Artem19981 Общие вопросы Javascript 2 19.01.2018 15:27
Матрица расстояний lihtaryk Общие вопросы Javascript 21 25.05.2015 14:55
9-ти разрядная матрица Mersedes! Ваши сайты и скрипты 4 09.08.2012 14:17
Матрица радиокнопок fredrsf Общие вопросы Javascript 13 10.11.2010 22:21