Вычисление миллиона операций в секунду для встроенного программного обеспечения

Вы никогда не назначаете класс .user-email в своем примере кода. Вы только назначаете класс .user-row элементу tr. Если вы хотите получить элементы по классам, вы можете использовать классы, назначенные Angular Material. Каждый элемент td получает класс формата mat-column-{columnName}, например, mat-column-email в вашем случае.

Вот как я бы это проверил:

it('should test the table ', (done) => {
  expect(component.users).toEqual(testUsers);

  fixture.detectChanges();
  fixture.whenStable().then(() => {
    fixture.detectChanges();

    let tableRows = fixture.nativeElement.querySelectorAll('tr');
    expect(tableRows.length).toBe(4);

    // Header row
    let headerRow = tableRows[0];
    expect(headerRow.cells[0].innerHTML).toBe('Email');
    expect(headerRow.cells[1].innerHTML).toBe('Created');
    expect(headerRow.cells[2].innerHTML).toBe('Roles');

    // Data rows
    let row1 = tableRows[1];
    expect(row1.cells[0].innerHTML).toBe('dummy@mail.com');
    expect(row1.cells[1].innerHTML).toBe('01-01-2020');
    expect(row1.cells[2].innerHTML).toBe('admin,standard');

    // Test more rows here..

    done();
  });
});

Вы можете найти работающий блик стека здесь .

6
задан Ilya 17 November 2008 в 23:52
поделиться

7 ответов

Хорошо Вы понимаете, что это чревато правовыми оговорками и предупреждениями - скорости ЦП, скорости памяти, удачные обращения в кэш, сбросы таблиц страниц MMU, конфликтная ситуация при обращении к шине, и т.д.... (если это - мощная встроенная система), весь фактор значительно в решение....

Сказав, что.... то, что я сделал бы, является этим. Доберитесь операционная система реального времени (останьтесь со мной), возможно, что-то как FreeRTOS (свободный, какое удивление) или u/C-OS-II (не свободный для коммерческого использования, возможно, $3 тысячи). Эти ядра позволяют Вам оснащать код для подсчета неактивных циклов ЦП (неактивный цикл вращения задачи).

Так запускает Ваше целое приложение (или приложение клиента) как единственная (ненеактивная) задача на плате, о которой Вы парни договариваетесь (например, плата MPC860, плата ARM7, и т.д....). Измерьте % ЦП на плате через RTOS. (например, "на плате Flibber, достигающей 60 МГц, наше приложение использовало 12% ЦП".)

Без них дающий Вам больше, или наоборот, который походит на довольно разумную длину для движения в для них.

Хорошая вещь состоит в том, что, после того как Вы сделали это, можно снова использовать работу для других целей и/или плат, возможно, числа помогут Вам увеличить продажи и/или настроиться/оптимизировать Ваше программное обеспечение.

Удачи!

4
ответ дан 17 December 2019 в 02:35
поделиться

У Вас есть средство моделирования или датчик отладчика, который может дать Вам количество инструкции? Вы не должны даже делать этого для правильной целевой платформы, просто грубое количество инструкции сделает.

Если все остальное перестало работать, выполните его на любой платформе, к которой Вы имеете доступ, масштабируете время выполнения с частным your-MHz/customer's-MHz. Это должно дать Вам очень грубую оценку, какого вида из времени выполнения клиент испытает.

2
ответ дан 17 December 2019 в 02:35
поделиться

I/S является "слабой" метрикой для системы с операционной системой.

В основных элементах, что необходимо сделать,

  1. выясните путь инструкции худшего случая и рассчитайте, сколько циклов требуется для выполнения (это означает читать блок для того, что ЦП и рассмотрение руководства ЦП, которые говорят Вам # циклов).
  2. Теперь выясните свои ограничения реального времени.
  3. Затем Вы используете № 1 для циклов худшего случая. Скорректируйте ЦП вверх/вниз, пока он не поместится в ограничения реального времени.
  4. Добавьте фактор выдумки.
0
ответ дан 17 December 2019 в 02:35
поделиться

Вы говорите, что Ваше программное обеспечение является очень портативным, таким образом, мое предложение состояло бы в том, чтобы запустить программное обеспечение на платформе, которая является самой близкой в архитектуре процессора, системе команд процессора и памяти / тип периферийной шины. Измерьте самую долгую стандартную программу, которая должна работать в в реальном времени и затем сделать оценку относительно того, сколько времени она будет работать на их архитектуре.

0
ответ дан 17 December 2019 в 02:35
поделиться

Первая вещь, в которой Вы испытываете необходимость, чтобы сделать, состоит в том, чтобы придумать своего рода критерии корректной операции. Это собирается зависеть очень от природы приложения - Ваши критерии могли бы включать, "должен выполнить код x в 3 мс", или "должен иметь задержку ниже, чем 100 мс". Любой критерий, который не имеет отношение назад к количественному измерению, будет трудным, поскольку это будет субъективно.

Нахождение Ваших критериев корректной операции позволит Вам находить критические части кода. Примите во внимание, что они могут быть найдены в угловых случаях, а не нормальном функционировании.

Если те критические части кода являются небольшими, затем инструкции по подсчету для Вашей целевой платформы будут относительно straightfoward. Если у Вас есть средство моделирования, которое может быть еще легче. (в зависимости от кода Вы, возможно, должны привести в порядок насмешку, чтобы гарантировать, что он выполняется, но это, вероятно, все еще будет легче, чем подсчет инструкций, если у Вас будет большой блок кода для анализа),

Если Ваш критический код является большим затем, Вам, возможно, придется сделать что-то подобное предложению JesperE. Если Ваше приложение не предназначено для невероятно чувствительной к цене промышленности, возможности состоят в том, что клиент будет готов принять немного слабое в вычислениях - настолько лучше к по оценке, чем заниженная оценка Ваши требования CPU.

То, где я отличался бы от предложения JesperE, должно предложить не концентрироваться на МГц, а скорее фактическом MIPS целей. Например, скомпилируйте и выполните свой код на тестовой платформе - если у Вас есть профилировщик, который может быть тем лучше. Затем скомпилируйте свой код для цели клиента и сделайте грубое сравнение количества инструкций в результирующем исполняемом файле. Можно затем включить это отношение, наряду с относительным MIPS теста и нацелены на процессоры в вычисление времени выполнения.

0
ответ дан 17 December 2019 в 02:35
поделиться

Большинство современных дневных отладчиков дает Вам возможность просмотреть использованные инструкции, например; RVDS. Плюс, можно использовать эмуляторы процессора для получения достойной идеи инструкций, использованных, на самом деле не работая на платформе (если код автономен, такие как кодек или криптографический модуль и не зависит на борту) - отмечают, что это даст Вам инструкции, не циклы. Циклы будут затронуты Вашими деталями платы (например; состояния ожидания, доступ к памяти и т.д.)

0
ответ дан 17 December 2019 в 02:35
поделиться

On two of the processor architectures that I use (MSP430F5X and AVR32) there is a hardware cycle count register built into the processor. I normally have a scheme where, when the processor is not busy it is placed into a low power idle state with the processor core halted. There are then two options for working out the actual processor load. I can either set a breakpoint in a periodic timer function and read the number of processor cycles executed or I can instrument particular processes by reading this register at the start and end of their operation. The processor idle time does not appear in the cycle count as the CPU is halted for this time.

You do not specify your processor architecture but this capability may be present.

0
ответ дан 17 December 2019 в 02:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: