Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Penegasan Jenis dan Suis Jenis Go Berprestasi Berbanding Kaedah Semakan Jenis Lain?

Bagaimanakah Penegasan Jenis dan Suis Jenis Go Berprestasi Berbanding Kaedah Semakan Jenis Lain?

DDD
Lepaskan: 2024-12-14 08:33:12
asal
817 orang telah melayarinya

How Do Go's Type Assertions and Type Switches Perform Compared to Other Type Checking Methods?

Jenis Penegasan dan Suis Jenis dalam Go: Pertimbangan Prestasi

Dalam Go, penegasan taip dan suis taip menyediakan mekanisme penemuan jenis masa jalan. Walau bagaimanapun, kebimbangan telah dibangkitkan tentang prestasi mereka berbanding kaedah seperti perbandingan jenis ahli dalam C/C .

Untuk menilai kesannya, ujian penanda aras telah dijalankan untuk membandingkan kelajuan kaedah ini:

package main

import (
    "testing"
)

type myint int64

type Inccer interface {
    inc()
}

func (i *myint) inc() {
    *i = *i + 1
}

func BenchmarkIntmethod(b *testing.B) {
    i := new(myint)
    incnIntmethod(i, b.N)
}

func BenchmarkInterface(b *testing.B) {
    i := new(myint)
    incnInterface(i, b.N)
}

func BenchmarkTypeSwitch(b *testing.B) {
    i := new(myint)
    incnSwitch(i, b.N)
}

func BenchmarkTypeAssertion(b *testing.B) {
    i := new(myint)
    incnAssertion(i, b.N)
}

// Remaining helper functions...
Salin selepas log masuk

Keputusan pada mesin AMD R7 2700X (Go v1.12.9) menunjukkan bahawa semua kaedah mempunyai persamaan prestasi:

BenchmarkIntmethod-16           2000000000           1.67 ns/op
BenchmarkInterface-16           1000000000           2.03 ns/op
BenchmarkTypeSwitch-16          2000000000           1.70 ns/op
BenchmarkTypeAssertion-16       2000000000           1.67 ns/op
Salin selepas log masuk

Berbeza dengan keputusan sebelumnya dari 2015 pada mesin amd64, tiada kelembapan ketara yang diperhatikan apabila menggunakan suis atau penegasan jenis berbanding dengan panggilan kaedah langsung atau akses antara muka.

Secara keseluruhannya, prestasi penegasan dan suis jenis telah meningkat dengan ketara dalam Go dan kini setanding dengan metodologi semakan jenis lain. Oleh itu, anda boleh menggunakannya dalam kod anda tanpa bimbang tentang penalti prestasi yang besar.

Atas ialah kandungan terperinci Bagaimanakah Penegasan Jenis dan Suis Jenis Go Berprestasi Berbanding Kaedah Semakan Jenis Lain?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan