RE: Fetch API, Promises Polyfill

김욱래 이사님,
감사합니다^^ 6월 정도에 slot을 한번 잡아보겠습니다~^^

이원석 드림.

From: 김욱래 [mailto:wlkim@inswave.com]
Sent: Monday, May 04, 2015 2:04 PM
To: 이원석
Cc: Sangwhan Moon; HTML KIG; public-html5kr@w3.org
Subject: Re: Fetch API, Promises Polyfill

안녕하십니까. 인스웨이브 김욱래입니다.

적당한 시간을 잡아 주시면 진행해보겠습니다.
Promise 테스트만으로는 내용이 너무 없어서
뭔가를 더 추가해야할 것 같습니다.

감사합니다.
김욱래
-------------------------------------------------
김욱래 이사 / 연구개발본부, (주)인스웨이브 시스템즈
-------------------------------------------------
Tel    : 02-2082-1431     Mobile : 010-3791-6175
Fax    : 02-2082-1410     Email  : wlkim@inswave.com<mailto:wlkim@inswave.com>
Addr  : 152-790
         서울특별시 구로구 구로 3동 182-13 대륭포스트타워 2차 414호
홈페이지 : http://www.inswave.com

웹스퀘어 : http://www.websquare.co.kr

기술지원 : https://www.inswave.com/support

-------------------------------------------------

2015년 5월 3일 오후 11:54, 이원석 <wonsuk.lee@etri.re.kr<mailto:wonsuk.lee@etri.re.kr>>님이 작성:
김욱래 이사님,
좋은 자료 공유해 주셔서 감사합니다. 언제 KIG회의에서 한번 어떻게 시험을 하셨는지 간단히 소개를 해주셔도 좋을 것 같습니다^^

이원석 드림.

From: 김욱래 [mailto:wlkim@inswave.com<mailto:wlkim@inswave.com>]
Sent: Thursday, April 30, 2015 1:17 PM
To: Sangwhan Moon
Cc: HTML KIG
Subject: Re: Fetch API, Promises Polyfill

안녕하세요.

좋은 내용을 소개해 주셔서 감사합니다.

얼마전에 Promise를 적용하려고 조사했던 polyfills 관련 정보 몇가지를 공유해드립니다.

1. 성능

아래는 성능 관련된 benchmark 링크입니다.

https://github.com/petkaantonov/bluebird/tree/master/benchmark


results for 10000 parallel executions, 1 ms per I/O op

file                                     time(ms)  memory(MB)
callbacks-baseline.js                         232       35.86
promises-bluebird-generator.js                235       38.04
promises-bluebird.js                          335       52.08
promises-cujojs-when.js                       405       75.77
promises-tildeio-rsvp.js                      468       87.56
promises-dfilatov-vow.js                      578      125.98
callbacks-caolan-async-waterfall.js           634       88.64
promises-lvivski-davy.js                      653      109.64
promises-calvinmetcalf-lie.js                 732      165.41
promises-obvious-kew.js                      1346      261.69
promises-ecmascript6-native.js               1348      189.29
generators-tj-co.js                          1419      164.03
promises-then-promise.js                     1571      294.45
promises-medikoo-deferred.js                 2091      262.18
observables-Reactive-Extensions-RxJS.js      3201      356.76
observables-caolan-highland.js               7429      616.78
promises-kriskowal-q.js                      9952      694.23
observables-baconjs-bacon.js.js             25805      885.55

Platform info:
Windows_NT 6.1.7601 x64
Node.JS 1.1.0
V8 4.1.0.14
Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz × 4


브라우저 별 성능 테스트 자료는 찾지 못해서 HTML5ROCKS 샘플( http://www.html5rocks.com/ko/tutorials/es6/promises/ )을
이용해서 직접 수행했습니다. 대상 라이브러리는 rsvp, bluebird를 이용했고, XHR 구현도 같이 테스트 했습니다. 값이 작을 수록 더 나은 성능입니다.
참고로 아래 메일에 있는 Promises Polyfill은 rsvp의 subset입니다.

RSVP Bluebird XHR
 IE6 427 776 422
 IE8 304 367 553
 IE9 347 291 494
 Chrome 109 115 286


2. 브라우저 하위호환성

Internet Explorer는 최신 버전인 11에서도 promise를 지원하지 않아 polyfill을 사용해야 합니다.
하지만, 대표적인 polyfill인 rsvp, bluebird의 경우 Internet explorer 9부터 지원되는
Array.reduce, Array.map, Array.forEach를 사용하고 있어서 IE6~8과 같은 구형 버전 Internet Explorer를 지원해야 하면
es5-shims ( https://github.com/es-shims/es5-shim/blob/master/es5-shim.js )를 포함시켜야 합니다.

또한 구형 버전에서는 Promise 메소드 중 catch가 ECMAScript 예약어 catch와 충돌이 발생됩니다.
.catch()대신 ["catch"]()를 사용하면 회피할 수 있습니다.


감사합니다.
김욱래
-------------------------------------------------
김욱래 이사 / 연구개발본부, (주)인스웨이브 시스템즈
-------------------------------------------------
Tel    : 02-2082-1431     Mobile : 010-3791-6175
Fax    : 02-2082-1410     Email  : wlkim@inswave.com<mailto:wlkim@inswave.com>
Addr  : 152-790
         서울특별시 구로구 구로 3동 182-13 대륭포스트타워 2차 414호
홈페이지 : http://www.inswave.com

웹스퀘어 : http://www.websquare.co.kr

기술지원 : https://www.inswave.com/support

-------------------------------------------------

2015년 4월 29일 오후 5:08, Sangwhan Moon <sangwhan@iki.fi<mailto:sangwhan@iki.fi>>님이 작성:
추가 내용입니다.

Fetch: https://github.com/github/fetch

Promises: https://github.com/jakearchibald/es6-promise


(개인적으로 사용을 해본적이 없어, 라이브러리 자체에 대한 질문은 깃헙 프로젝트 오너한테 하시는게 빠를겁니다. ^^)

감사합니다.

Received on Tuesday, 5 May 2015 06:30:45 UTC