Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
Emsec video
nikkimp
2015 aha-guidelines-highlights-spanish-1
Leyla Reyes Vásquez
2013 JCO tipJS.com JavaScript MVC framework
Seung-Hyun PAEK
Digital rf who are we
nikkimp
Nuevas estrategias de resucitación en el pac traumatizado grave 2014 med int
Leyla Reyes Vásquez
Impact Investing in Germany
Laura Kromminga
JavaScript defer & async
Seung-Hyun PAEK
Project bs oss
Seung-Hyun PAEK
1
of
75
Top clipped slide
bsSelector (GDG DevFest 2014)
Jun. 1, 2014
•
0 likes
5 likes
×
Be the first to like this
Show More
•
1,129 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Software
bsSelector 발표자료 (GDG DevFest 2014)
Seung-Hyun PAEK
Follow
Founder at tipJS.com
Advertisement
Advertisement
Advertisement
Recommended
bsSelector.js(OctoberSky.js)
Seung-Hyun PAEK
1.8K views
•
53 slides
bsSelector (OKJSP)
Seung-Hyun PAEK
564 views
•
48 slides
MySQL delete.update
Hoyoung Jung
1.9K views
•
6 slides
Nuevas estrategias de resucitación en el pac traumatizado grave 2014 med int
Leyla Reyes Vásquez
125 views
•
11 slides
Digital rf who are we
nikkimp
108 views
•
7 slides
Ley
Leyla Reyes Vásquez
275 views
•
5 slides
More Related Content
Viewers also liked
(8)
Emsec video
nikkimp
•
339 views
2015 aha-guidelines-highlights-spanish-1
Leyla Reyes Vásquez
•
133 views
2013 JCO tipJS.com JavaScript MVC framework
Seung-Hyun PAEK
•
736 views
Digital rf who are we
nikkimp
•
103 views
Nuevas estrategias de resucitación en el pac traumatizado grave 2014 med int
Leyla Reyes Vásquez
•
139 views
Impact Investing in Germany
Laura Kromminga
•
702 views
JavaScript defer & async
Seung-Hyun PAEK
•
5K views
Project bs oss
Seung-Hyun PAEK
•
1.5K views
Similar to bsSelector (GDG DevFest 2014)
(20)
R 프로그래밍을 이용한 야생동물 행동권(HR) 분석
Byeong-Hyeok Yu
•
3.3K views
Javascript
Hong Hyo Sang
•
82 views
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
SangHoon Han
•
87 views
NDC11_김성익_슈퍼클래스
Sungik Kim
•
1.6K views
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH, 케이티하이텔
•
858 views
채팅 소스부터 Https 주소까지
Kenu, GwangNam Heo
•
913 views
First Step In Ajax Korean
Terry Cho
•
2.1K views
처음배우는 자바스크립트, 제이쿼리 #3
성일 한
•
1.8K views
처음배우는 자바스크립트, 제이쿼리 #4
성일 한
•
1.6K views
3주 CSS Basic
지수 윤
•
1.1K views
Web_03_Front-end Advance
team air @ Dimigo
•
550 views
[0312 조진현] good bye dx9
진현 조
•
1.4K views
R project_pt1
Joonho Lee
•
419 views
Mongo db 최범균
beom kyun choi
•
12K views
Startup JavaScript 9 - Socket.IO 실시간 통신
Circulus
•
2.8K views
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
엑셈
•
782 views
Front-end Development Process - 어디까지 개선할 수 있나
JeongHun Byeon
•
50.5K views
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
Esun Kim
•
7K views
Node.js at OKJSP
JeongHun Byeon
•
1.9K views
EcmaScript6(2015) Overview
yongwoo Jeon
•
3.9K views
Advertisement
Recently uploaded
(20)
전통적인 개발과 테스트 주도 개발, 그리고 애자일
restarttap
•
0 views
SMTP Server
RileyBaxter2
•
5 views
스크럼 101
Daniel Lim
•
12 views
오락실플랫폼 사업계획서
DanielShin70
•
4 views
그림으로 배우는 StatQuest 머신러닝 강의
Jay Park
•
743 views
FastAPI에서 SQLALchemy 세션 관리하기
ssuserbe8f401
•
14 views
인터넷 오락실게임 사업계획서_20230320v2.doc
Daniel Shin
•
7 views
C++20 Concepts library
진화 손
•
3 views
마이너리티 아레나 기본 전투 시스템 기획서
Nawe1
•
165 views
[slideshare]k8s.pptx
ssuserb8551e
•
7 views
As-Is 분석 절차와 방법.pptx
Seong-Bok Lee
•
22 views
C++ 20 Stronger Unicode requirements
진화 손
•
3 views
C++20 Attributes [[likely]] and [[unlikely]]
진화 손
•
18 views
C++ 20 Relaxing the range-for loop customization point finding rules
진화 손
•
4 views
(KRUG Session) 쿠버네티스 모니터링.pdf
Hyunjin Lee
•
89 views
(독서광) 필독! 개발자 온보딩 가이드
Jay Park
•
464 views
강화학습 & Unity ML Agents
Hyunjong Lee
•
14 views
C++ 20 Relaxing the structured bindings customization point finding rules
진화 손
•
7 views
엔지니어링 비젼_동영상제거.pptx
Kyoung Seok(경석) Ko(고)
•
85 views
클라우드 컴퓨팅 기본 사항 (Fundamentals)
Ian Choi
•
39 views
bsSelector (GDG DevFest 2014)
PAEK, Seung-Hyun - ProjectBS
재배하는 농부(committer) - SHOU Communications 근무 - 웹개발자(JavaScript 사랑함)
projectBS
projectBS bsJS??
projectBS bsJS??
#domID 요소의 1. 모서리를
둥글게 2. 넓이를 지정 3. 글자색을 지정 4. Click event 설정 5. 글자색 취득
bsJS var color =
$('#domID').css( { 'borderRadius' : 5, ‘color’ : ‘#fff’ } ) .attr('width', 100) .click(function(){alert(1)}) .css('color'); console.log(color) // "#fff"
bsJS var color =
$('#domID').css( { 'borderRadius' : 5, ‘color’ : ‘#fff’ } ) .attr('width', 100) .click(function(){alert(1)}) .css('color'); console.log(color) // "#fff" var color = bs.Dom('#domID') .S('border-radius', 5, '@width', 100, ‘click’, function(){alert(1)}, ’color', '#fff'); console.log(color) // "#fff"
bsJS var color =
$('#domID').css( { 'borderRadius' : 5, ‘color’ : ‘#fff’ } ) .attr('width', 100) .click(function(){alert(1)}) .css('color'); console.log(color) // "#fff" var color = bs.Dom('#domID') .S('border-radius', 5, '@width', 100, ‘click’, function(){alert(1)}, ’color', '#fff'); console.log(color) // "#fff" 호스트코드: 110 byte 오브젝트 생성: O 함수호출: 4회 호스트코드: 94 byte 오브젝트 생성: X 함수호출: 1회
Selector engine 왜 만들게 되었나?
bsJS의 Selector engine
bsJS 에 독자 적인
셀렉터를 갖고싶은데..
bsJS 에 독자 적인
셀렉터를 갖고싶은데.. ㅇㅇ??
승현이 니가 만들면 되겠네 ~!!
승현이 니가 만들면 되겠네 ~!! !!?? (=_=);;;;
Selector process query의 tokenizer 요소
선택 요소 순환 요소 판정 결과 반환
Selector process query의 tokenizer 요소
선택 요소 순환 요소 판정 결과 반환
Selector process query의 tokenizer 요소
선택 요소 순환 요소 판정 결과 반환
Selector process query의 tokenizer 요소
선택 요소 순환 요소 판정 결과 반환
Selector process query의 tokenizer 요소
선택 요소 순환 요소 판정 결과 반환
Selector process query의 tokenizer 요소
선택 요소 순환 요소 판정 결과 반환
query = 'ul.toc
li.tocline2‘; tokens = ['ul', '.toc', ' ', 'li', ‘.tocline2‘]; if(tokens[i].charAt(0) == '#') document.getElementById(tokens[i].substr(1)); else if(tokens[i].charAt(0) == '.') document.getElementByClassName(tokens[i].substr(1)); else document.getElementsByTagName('*');
CSS2 spec 은 기본아냐?
CSS2 spec 은 기본아냐? ㅇㅇ~
CSS3 spec 도 하는김에
하지?
CSS3 spec 도 하는김에
하지? 으..으응..;;;
CSS4 spec 이 새로
나왔던데?
CSS4 spec 이 새로
나왔던데? 뭐?? (이 **야)
일단 완성 성능이 궁금하다!!
일단 완성 성능이 궁금하다!!
Sizzle speed
jsPerf.com
getElementById getElementsByTagName getElementsByClassName getElementsByName querySelectorAll
ID TAG CLASS
NAME 2,096,567 1,876,875 1,841,273 1,575,123 17,090,351 8,920,145 8,285,463 8,031,034 19,384,745 16,661,973 17,559,678 19,073,485
ID TAG CLASS 124,963
126,480 106,504 1,091,549 222,199 210,918 2,020,367 321,119 339,747
쿼리 패턴별로 각 메서드
성능을 정리한 뒤 효율이 좋은 부분에 반영
820424 1501379 1372821 2343437 0 500000 1000000
1500000 2000000 2500000 jQuery Sizzle Mootools bsSelector Sizzle Benchmark
상황은 나아졌지만 … 다음은???
JavaScript는 인터프리터 언어
인터프리터?
몇가지 힌트를 통해 얻은 결론 기계적인
접근
몇가지 힌트를 통해 얻은 결론 기계적인
접근
기계적인 접근?? JavaScript 엔진이 하는일을
줄이는것
기계적인 접근?? JavaScript 엔진이 하는일을
줄이는것
함수 호출을 최소화
함수 호출을 최소화
한다
함수 호출을 최소화
한다 function Non function 16,830 54,080 49,063 49,436 51,524 52,066
캐쉬 활용
LinkedList getElementsByTagName getElementsByClassName
var els =
document.getElementsByTagName(‘div’); Console.log(els.length); // 1 var newEl = document.createElement(‘div’); document.body.appendChild(newEl); console.log(els.length); // 2
반복의 제거
div P[0] P[1] P[2] ‘p:last-child’
새로운 DOM 속성 활용
element.childNodes; children.nodeType == 1; VS element.children
이런 사실들을 바탕으로 재작성
이런 사실들을 바탕으로 재작성
Sizzle Mootools-slick bsSelector 함수개수
140 93 13 라인수 1,214 2,037 305 용량 60,335 37,935 13,485
그 결과
Chrome
IE10
3010190 2758557 9054979 1960305 1941198 7240460 0 2000000 4000000
6000000 8000000 10000000 Sizzle Mootools bsSelector with querySelectorAll IE10 chrome
3155191 2662334 9036840 2408144 1749609 8094011 0 2000000 4000000
6000000 8000000 10000000 Sizzle Mootools bsSelector without querySelectorAll IE10 chrome
외제라고 넘사벽은 아닙니다. 국산도 할 수
있어요!!
감사합니다. ProjectBS group https://www.facebook.com/groups/bs5js/ github bsJS http://ligo.kr/i7 github
bsSelector http://ligo.kr/o8
Editor's Notes
http://jsperf.com/jsconf-id-class-name-tag
http://jsperf.com/jsconf-id-class-name-tag/2
http://jsperf.com/jsconf-function-vs-non-function
Advertisement