0
常識を覆すソートアルゴリズムSleep sort<br />サイボウズ・ラボ/ Shibuya.pm<br />竹迫 良範  @TAKESAKO<br />
2009/04/06<br />Cybozu University<br />2<br />
常識を覆すソートアルゴリズム Sleep sort<br />#!/bin/bash<br />function f() {<br />    sleep "$1" && echo "$1"<br />}<br />while [ -n "$1...
2009/04/06<br />Cybozu University<br />4<br />4ch BBS<br />
2009/04/06<br />Cybozu University<br />5<br />
2009/04/06<br />Cybozu University<br />6<br />
2009/04/06<br />Cybozu University<br />7<br />
2009/04/06<br />Cybozu University<br />8<br />
2009/04/06<br />Cybozu University<br />9<br />package main<br />import (<br />    "os"<br />    "strconv"<br />    "syscal...
2009/04/06<br />Cybozu University<br />10<br />setTimeoutで<br />Sleep sort を<br />実装してみた<br />
JavaScript版 Sleep sort(1000ミリ秒単位)<br />function sleep_sort(a) {<br />   for(var i = 0; i < a.length; i++){<br />      call...
ブラウザで実際に動かしてみる<br />setTimeout(f, n * 1000) バージョン<br />
高速 JavaScript版 Sleep sort(1ミリ秒単位)<br />function sleep_sort(a) {<br />   for(var i = 0; i < a.length; i++){<br />      call...
本当に動くのかブラウザで実際に動かしてみる<br />setTimeout(f, n * 1) ミリ秒バージョン<br />
手元の環境で setTimeoutの分解能を調べてみた<br />※タブの表・裏やOSなど環境によって差があります<br />
※ クロスブラウザ対応とはこういうこと?<br />setTimeout(f, (n+5) * 2) ミリ秒バージョン<br />
2009/04/06<br />Cybozu University<br />17<br />Node.js<br />
Node.js 版 Sleep sort(10ピコ秒単位)<br />function sleep_sort(a) {<br />   for(var i = 0; i < a.length; i++) {<br />      callbac...
Node.js の setTimeout分解能(およそ)<br />※タブの表・裏やOSなど環境によって差があります<br />
2009/04/06<br />Cybozu University<br />20<br />Node.js<br />最速伝説<br />
Upcoming SlideShare
Loading in...5
×

Node.js - sleep sort algorithm

2,732

Published on

setTimeout

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,732
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Node.js - sleep sort algorithm"

  1. 1. 常識を覆すソートアルゴリズムSleep sort<br />サイボウズ・ラボ/ Shibuya.pm<br />竹迫 良範 @TAKESAKO<br />
  2. 2. 2009/04/06<br />Cybozu University<br />2<br />
  3. 3. 常識を覆すソートアルゴリズム Sleep sort<br />#!/bin/bash<br />function f() {<br /> sleep "$1" && echo "$1"<br />}<br />while [ -n "$1" ]<br />do<br /> f "$1" &<br /> shift<br />done<br />wait<br />実行方法<br />$ ./sleepsort.bash 5 4 3 2 1<br />
  4. 4. 2009/04/06<br />Cybozu University<br />4<br />4ch BBS<br />
  5. 5. 2009/04/06<br />Cybozu University<br />5<br />
  6. 6. 2009/04/06<br />Cybozu University<br />6<br />
  7. 7. 2009/04/06<br />Cybozu University<br />7<br />
  8. 8. 2009/04/06<br />Cybozu University<br />8<br />
  9. 9. 2009/04/06<br />Cybozu University<br />9<br />package main<br />import (<br /> "os"<br /> "strconv"<br /> "syscall"<br />)<br />func main() {<br />args := os.Args[1:]<br /> done := make(chan int64)<br /> for _, arg := range args {<br /> i, _ := strconv.Atoi64(arg)<br /> go func(i int64) {<br />syscall.Sleep(i * 1e9)<br /> done <- i<br /> }(i)<br /> }<br /> for _ = range args {<br />println(<-done)<br /> }<br />}<br />
  10. 10. 2009/04/06<br />Cybozu University<br />10<br />setTimeoutで<br />Sleep sort を<br />実装してみた<br />
  11. 11. JavaScript版 Sleep sort(1000ミリ秒単位)<br />function sleep_sort(a) {<br /> for(var i = 0; i < a.length; i++){<br /> callback( a[i] );<br /> }<br /> function callback(n) {<br />setTimeout( function(){ <br />document.body.innerHTML+= n + "<br>n";<br /> }, n * 1000)<br /> }<br />}<br />実行方法<br />sleep_sort([5,4,3,2,1,0]);<br />
  12. 12. ブラウザで実際に動かしてみる<br />setTimeout(f, n * 1000) バージョン<br />
  13. 13. 高速 JavaScript版 Sleep sort(1ミリ秒単位)<br />function sleep_sort(a) {<br /> for(var i = 0; i < a.length; i++){<br /> callback( a[i] );<br /> }<br /> function callback(n) {<br />setTimeout( function(){ <br />document.body.innerHTML+= n + "<br>n";<br /> }, n* 1)<br /> }<br />}<br />実行方法<br />sleep_sort([11,12,5,4,3,13,2,1,0,9,8,7,6,10]);<br />
  14. 14. 本当に動くのかブラウザで実際に動かしてみる<br />setTimeout(f, n * 1) ミリ秒バージョン<br />
  15. 15. 手元の環境で setTimeoutの分解能を調べてみた<br />※タブの表・裏やOSなど環境によって差があります<br />
  16. 16. ※ クロスブラウザ対応とはこういうこと?<br />setTimeout(f, (n+5) * 2) ミリ秒バージョン<br />
  17. 17. 2009/04/06<br />Cybozu University<br />17<br />Node.js<br />
  18. 18. Node.js 版 Sleep sort(10ピコ秒単位)<br />function sleep_sort(a) {<br /> for(var i = 0; i < a.length; i++) {<br /> callback( a[i] );<br /> }<br /> function callback(n) {<br />setTimeout( function(){ console.log(n); }<br /> , (n+1) * 1e-8)<br /> }<br />}<br />sleep_sort(process.argv.slice(2));<br />実行方法<br />$ node sort.js 5 4 3 2 1 0<br />
  19. 19. Node.js の setTimeout分解能(およそ)<br />※タブの表・裏やOSなど環境によって差があります<br />
  20. 20. 2009/04/06<br />Cybozu University<br />20<br />Node.js<br />最速伝説<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×