Haskell 程式計算方法執行時間
在 Haskell 中,我們可以使用 getCurrentTime 和 NominalDiffTime 函式來計算方法的執行時間。在第一個示例中,我們將使用 (startTime <- getCurrentTime 和 endTime <- getCurrentTime) 函式。在第二個示例中,我們將使用 NominalDiffTime 函式。
步驟 1 - 匯入 Data.Time 模組以處理時間。
步驟 2 - 定義 timeFunction 函式,如下所示:
例如 1 -
timeFunction function = do startTime <- getCurrentTime function endTime <- getCurrentTime.
例如 2 & 3 -
timeMethod method = do startTime <- getCurrentTime result <- method endTime <- getCurrentTime.
步驟 3 - 程式執行將從 main 函式開始。main() 函式控制整個程式。它寫成 main = do。它呼叫 timeFunction 和 someFunction 函式。
步驟 4 - 初始化名為“diff”的變數。它將儲存開始時間和結束時間之間的差值。
步驟 5 - 呼叫函式後,將結果執行時間列印到控制檯。
示例 1
在此示例中,timeFunction 函式將 IO 操作作為輸入,並計算執行該操作所需的時間。它透過在執行操作之前和之後獲取當前時間,然後計算時間差來實現此目的。然後,使用 putStrLn 函式將時間差列印到控制檯。在本例中,someFunction 是我們正在計算執行時間的方法。
import Data.Time someFunction :: IO () someFunction = do putStrLn "Function completed" timeFunction :: IO () -> IO () timeFunction function = do startTime <- getCurrentTime function endTime <- getCurrentTime let diff = diffUTCTime endTime startTime putStrLn $ "Execution Time: " ++ (show diff) main :: IO () main = do timeFunction someFunction
輸出
Function completed Execution Time: 0.00012295s
示例 2
在此示例中,我們將瞭解如何計算方法的執行時間。這可以透過使用 NominalDiffTime 函式來完成。
import Data.Time.Clock timeMethod :: IO a -> IO (a, NominalDiffTime) timeMethod method = do startTime <- getCurrentTime result <- method endTime <- getCurrentTime let diffTime = diffUTCTime endTime startTime return (result, diffTime) main :: IO () main = do (result, diffTime) <- timeMethod (putStrLn "Hello, world!") putStrLn ("Execution time: " ++ show diffTime)
輸出
Hello, world! Execution time: 0.000132438s
示例 3
在此示例中,該函式使用 Data.Time 模組在執行給定操作之前和之後獲取當前時間,然後計算兩個時間之間的差值以獲取執行時間。該函式返回一個元組,其中包含給定操作的結果和執行時間。
import Data.Time time :: IO a -> IO (a, NominalDiffTime) time action = do start <- getCurrentTime result <- action end <- getCurrentTime let diff = diffUTCTime end start return (result, diff) main :: IO () main = do (result, timeTaken) <- time (return "Hello World") putStrLn $ "Result: " ++ result putStrLn $ "Time taken: " ++ (show timeTaken)
輸出
Result: Hello World Time taken: 0.000000161s
結論
可以透過多種方式測量方法的執行時間,包括使用程式語言中的內建計時器函式、使用專門的效能測量工具或使用使用者定義的函式。在 Haskell 中,可以透過使用 getCurrentTime 和 NominalDiffTime 函式來計算方法的執行時間。