Keyboard shortcuts

Press โ† or โ†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Clock

๐Ÿ’ก ใŠ็Ÿฅใ‚‰ใ›: ใ“ใฎใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใฏAIใซใ‚ˆใฃใฆ็ฟป่จณใ•ใ‚Œใฆใ„ใพใ™ใ€‚่กจ็พใซ้•ๅ’Œๆ„ŸใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ๅŽŸๆ–‡๏ผˆ่‹ฑ่ชž๏ผ‰ใ‚’ๅ‚็…งใ™ใ‚‹ใ‹ใ€็ฟป่จณใซใ”ๅ”ๅŠ›ใใ ใ•ใ„ใ€‚

Flix ใฏใ€็พๅœจใฎๅฎŸๆ™‚้–“(wall-clock time)ใ‚’ๅ•ใ„ๅˆใ‚ใ›ใ‚‹ใŸใ‚ใฎใƒฉใ‚คใƒ–ใƒฉใƒชใ‚จใƒ•ใ‚งใ‚ฏใƒˆใจใ—ใฆ Clock ใ‚’ๆไพ›ใ—ใฆใ„ใพใ™ใ€‚Clock ใ‚จใƒ•ใ‚งใ‚ฏใƒˆใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใƒใƒณใƒ‰ใƒฉใ‚’ๆŒใคใŸใ‚ใ€main ใฎไธญใงๆ˜Ž็คบ็š„ใซ runWithIO ใ‚’ๅ‘ผใณๅ‡บใ™ๅฟ…่ฆใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ไธญๅฟƒใจใชใ‚‹ใƒขใ‚ธใƒฅใƒผใƒซใฏ Time.Clock ใงใ™ใ€‚

Clock ใ‚จใƒ•ใ‚งใ‚ฏใƒˆ

Clock ใ‚จใƒ•ใ‚งใ‚ฏใƒˆใฏใ€ใ‚จใƒใƒƒใ‚ฏ(epoch)ใ‹ใ‚‰ใฎ็ตŒ้Žๆ™‚้–“ใ‚’ๆŒ‡ๅฎšใ—ใŸๅ˜ไฝใง่ฟ”ใ™ใ€ๅ˜ไธ€ใฎๆ“ไฝœใ‚’ๆŒใกใพใ™ใ€‚

pub eff Clock {
    /// ใ‚จใƒใƒƒใ‚ฏใ‹ใ‚‰ใฎ็ตŒ้Žๆ™‚้–“ใ‚’ใ€ๆŒ‡ๅฎšใ•ใ‚ŒใŸๆ™‚้–“ๅ˜ไฝ `u` ใง่ฟ”ใ™ใ€‚
    def currentTime(u: TimeUnit): Int64
}

็ตๆžœใฎ็ฒ’ๅบฆใฏ TimeUnit enum ใซใ‚ˆใฃใฆๆฑบใพใ‚Šใพใ™ใ€‚

pub enum TimeUnit with Eq, ToString {
    case Days,
    case Hours,
    case Microseconds,
    case Milliseconds,
    case Minutes,
    case Nanoseconds,
    case Seconds
}

็พๅœจๆ™‚ๅˆปใฎๅ–ๅพ—

Clock ใฎใ‚‚ใฃใจใ‚‚ๅ˜็ด”ใชไฝฟใ„ๆ–นใฏใ€็พๅœจๆ™‚ๅˆปใ‚’่ชญใฟๅ–ใฃใฆ่กจ็คบใ™ใ‚‹ใ“ใจใงใ™ใ€‚

use Time.Clock
use Time.TimeUnit

def main(): Unit \ { Clock, IO } =
    let timestamp = Clock.currentTime(TimeUnit.Milliseconds);
    println("${timestamp} ms since the epoch")

Clock ใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใƒใƒณใƒ‰ใƒฉใ‚’ๆŒใคใŸใ‚ใ€ใ“ใฎใ‚จใƒ•ใ‚งใ‚ฏใƒˆใฏ่‡ชๅ‹•็š„ใซๅ‡ฆ็†ใ•ใ‚Œใพใ™ใ€‚

now ้–ขๆ•ฐ

Clock.now ้–ขๆ•ฐใฏใ€Clock.currentTime(TimeUnit.Milliseconds) ใฎ็Ÿญ็ธฎๅฝขใงใ™ใ€‚

use Time.Clock

def main(): Unit \ { Clock, IO } =
    let before = Clock.now();
    // ... ไฝ•ใ‚‰ใ‹ใฎๅ‡ฆ็†ใ‚’่กŒใ† ...
    let after = Clock.now();
    println("Elapsed: ${after - before} ms")