Динамическая производительность языка.NET?

Чтобы сделать это, вам нужно будет управлять состоянием немного по-другому, что-то похожее на то, что люди делают в редуксе. Взгляните на пример:

const { of, merge, fromEvent } = rxjs; // = require("rxjs")
const { map, scan } = rxjs.operators; // = require("rxjs/operators")

const toggle$ = fromEvent(document.getElementById('toggle'), 'click');
const show$ = fromEvent(document.getElementById('show'), 'click');
const hide$ = fromEvent(document.getElementById('hide'), 'click');

const reduce = (state, change) => change(state);

const initialState = false;
const state$ = merge(
  of(e => e),
  toggle$.pipe(map(e => state => !state)),
  show$.pipe(map(e => state => true)),
  hide$.pipe(map(e => state => false)),
).pipe(
  scan(reduce, initialState),
);

state$.subscribe(e => console.log('state: ', e));





Чтобы лучше понять, как это работает, взгляните на Создание приложений Статья из документации rxjs

8
задан Mike B 12 January 2009 в 15:28
поделиться

4 ответа

IronPython и IronRuby создаются сверху ДОЛЛАРА - динамического времени выполнения языка - и компилируются в CIL (байт-код, используемый.NET) на лету. Они медленнее, чем C#, но faaaaaaar быстрее, чем их дубликаты non-.NET. Нет никаких достойных сравнительных тестов там к моему знанию, но Вы будете видеть различие.

9
ответ дан 5 December 2019 в 09:26
поделиться

IronPython является на самом деле самой быстрой реализацией Python там. Для некоторого определения "самых быстрых", по крайней мере: запуск наверху CLR, например, огромен по сравнению с CPython. Кроме того, оптимизирующий компилятор, который имеет IronPython, действительно только имеет смысл, когда код выполнен многократно.

IronRuby имеет потенциал, чтобы быть как быстрый IronPython, так как многие интересные функции, которые делают IronPython быстро, были извлечены в Динамическое Время выполнения Языка, на котором создаются и IronPython и IronRuby (и Управляемый JavaScript, Динамический VB, IronScheme, VistaSmalltalk и другие).

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

Например, язык Common LISP является языком, который является еще более динамичным, чем Ruby или Python, и все же существуют компиляторы языка Common LISP там, которые могут даже составить C серьезную конкуренцию. Хорошие реализации Smalltalk, выполненные с такой скоростью, как Java (который не удивителен, и начиная с, главные JVMs, Sun HotSpot и начиная с IBM J9, на самом деле просто немного, изменили Smalltalk VMs), или C++. За только прошлые 6 месяцев основные реализации JavaScript (Mozilla TraceMonkey, Экстремальное значение Apple SquirrelFish и новенький, Google V8) сделали ginormous повышения производительности, 10x и больше, для обеспечения JavaScript лицом к лицу с неоптимизированным C.

7
ответ дан 5 December 2019 в 09:26
поделиться

В настоящее время IronRuby является довольно медленным в большинстве отношений. Это определенно медленнее, чем МРТ (Matz' Реализация Ruby) в целом, хотя в некоторых местах они быстрее.

IronRuby действительно имеет потенциал, чтобы быть намного быстрее, хотя я сомневаюсь, что они будут когда-либо добираться около C# с точки зрения скорости. В большинстве случаев это просто не имеет значения. Вызов базы данных, вероятно, составит 90% полной продолжительности веб-запроса, например.

Я подозреваю, что команда пойдет для полноты языка, а не производительности сначала. Это позволит Вам выполнять IronRuby и запускать большинство рубиновых программ, когда 1,0 поставки, затем они смогут улучшить перфект, когда они идут.

Я подозреваю, что IronPython имеет подобную историю.

1
ответ дан 5 December 2019 в 09:26
поделиться

Вы имеете верное представление путем предположения, что выполнение современной реализации.NET будет между выполнением предка и C#. Причина состоит в том, что C# очень тесно подобран к самой.NET.

F# является легкой задачей, потому что C# и OCaml имеют сами подобные рабочие характеристики.

IronPython намного более тверд, потому что Python и C# имеют дико различные рабочие характеристики. На самом деле ответ зависит от самой реализации IronPython, которая будет стремиться преобразовать неэффективную оценку стиля Python в эффективную оценку C#-style, когда это возможно. Ожидайте, что IronPython будет обычно намного медленнее, чем C# со случайными скачками в ту же территорию. Вы видите этот эффект здесь.

С наилучшими пожеланиями, Jon Harrop.

1
ответ дан 5 December 2019 в 09:26
поделиться
Другие вопросы по тегам:

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