Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengoptimumkan Pengimbasan Input dalam Go untuk Mengelakkan Tamat Masa?

Bagaimanakah Saya Boleh Mengoptimumkan Pengimbasan Input dalam Go untuk Mengelakkan Tamat Masa?

Barbara Streisand
Lepaskan: 2024-12-17 17:04:10
asal
363 orang telah melayarinya

How Can I Optimize Input Scanning in Go to Avoid Timeouts?

Mengoptimumkan Pengimbasan Input untuk Pelaksanaan Lebih Pantas

Untuk menangani isu tamat masa yang dialami dengan soalan SPOJ, pengoptimuman khusus diperlukan untuk pengimbasan input yang lebih pantas.

Menggunakan bufio.Scanner for Line Membaca

Daripada menggunakan fmt.Scan sahaja, manfaatkan bufio.Scanner untuk membaca baris daripada input dengan cekap.

Menyesuaikan Penukaran Nombor untuk Kepantasan

Memandangkan hanya input berangka dijangka, penukar nombor tersuai boleh dilaksanakan untuk mengekstrak integer terus daripada mentah bait. Ini meningkatkan prestasi dengan ketara berbanding menggunakan Pengimbas.Teks kerana mengelakkan penukaran rentetan dan overhed yang tidak diperlukan.

Pelaksanaan Penukar Nombor Tersuai

Fungsi toInt direka untuk menukar bait mentah kepada integer dengan cekap:

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

Fungsi ini memanfaatkan satu sama satu pemetaan digit kepada bait yang dikodkan UTF-8 dalam input.

Penyelesaian Ditapis

Menggabungkan pengoptimuman ini, penyelesaian yang dipertingkatkan berbunyi seperti berikut:

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)
}
Salin selepas log masuk

Kebaikan Pengoptimuman

Penyelesaian yang dioptimumkan ini meningkatkan kelajuan pengimbasan input dengan ketara, memastikan program boleh memproses input yang diperlukan dalam had masa yang diperuntukkan. Penukar nombor tersuai, bersama-sama dengan penggunaan bufio.Scanner, meminimumkan overhed masa jalan dan meningkatkan kecekapan program.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pengimbasan Input dalam Go untuk Mengelakkan Tamat Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan