>백엔드 개발 >Golang >더 빠른 정수 추출을 위해 Go에서 입력 검색을 어떻게 최적화할 수 있습니까?

더 빠른 정수 추출을 위해 Go에서 입력 검색을 어떻게 최적화할 수 있습니까?

DDD
DDD원래의
2024-12-14 15:45:18288검색

How Can I Optimize Input Scanning in Go for Faster Integer Extraction?

성능을 위한 입력 검색 최적화

입력 읽기 속도를 최적화하려는 질문에 대한 응답으로 bufio.Scanner 사용을 고려하는 것이 좋습니다. fmt.Scan을 통해. 그러나 bufio를 사용해도 시간 초과 문제가 지속됩니다.

이 문제를 해결하려면 fmt.Scan을 bufio.Scanner로 바꾸고 사용자 정의 변환 기능을 활용하여 원시 바이트에서 정수를 효율적으로 추출하면 입력 읽기 성능을 크게 향상시킬 수 있습니다. . 최적화된 솔루션은 다음과 같습니다.

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    var n, k, c int
    scanner := bufio.NewScanner(os.Stdin)

    scanner.Scan()
    fmt.Sscanf(scanner.Text(), "%d %d", &n, &k)

    for ; n > 0; n-- {
        scanner.Scan()
        if toInt(scanner.Bytes())%k == 0 {
            c++
        }
    }

    fmt.Println(c)
}

func toInt(buf []byte) (n int) {
    for _, v := range buf {
        n = n*10 + int(v-'0')
    }
    return
}

이 수정된 코드는 bufio.Scanner를 사용하여 입력 줄을 읽고, 불필요하게 문자열로 변환하는 대신 바이트에서 숫자를 직접 구문 분석하여 효율성을 최적화합니다. 결과적으로 이 솔루션은 다른 방법에 비해 눈에 띄는 성능 향상을 달성합니다.

위 내용은 더 빠른 정수 추출을 위해 Go에서 입력 검색을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.