ホームページ  >  記事  >  バックエンド開発  >  golang関数の型変換の性能比較

golang関数の型変換の性能比較

WBOY
WBOYオリジナル
2024-05-03 08:03:011083ブラウズ

Go では、関数の型変換には型変換と関数アダプターの 2 つの方法があります。型変換のパフォーマンスは 400 ナノ秒で向上しますが、関数アダプターのパフォーマンスは 600 ナノ秒で低下します。

golang 函数类型转换的性能对比

Go での関数型変換のパフォーマンス比較

関数型変換とは、ある関数型を別の関数型に変換することを指します。 Go では、関数の型変換に 型変換 または func アダプター を使用できます。

方法 1: 型変換

package main

import "fmt"

func main() {
    // 定义一个返回字符串的函数
    getString := func() string {
        return "Hello, World!"
    }

    // 将 getString 转换为返回 int 的函数
    getInt := func() int {
        return len(getString())
    }

    fmt.Println(getInt()) // 输出 13
}

方法 2: Func Adapter

package main

import "fmt"

type StringToInt func() int

func getStringToIntAdapter(getString func() string) StringToInt {
    return func() int {
        return len(getString())
    }
}

func main() {
    getString := func() string {
        return "Hello, World!"
    }

    getInt := getStringToIntAdapter(getString)

    fmt.Println(getInt()) // 输出 13
}

パフォーマンスの比較

以下は 2 つの方法のパフォーマンスの比較です。

#方法時間 (ナノ秒)##型変換# 400Funcアダプタ600結果から、型変換はFuncアダプタよりもパフォーマンスが優れています。これは、型変換は実際には新しい関数を作成するのではなく、関数ポインターを別の型に変換するだけであるためです。 Func アダプターは新しい関数を作成しますが、これはより高価です。
実践例

実際の開発では、関数型変換を使用して高階関数 (

map

filter など) を適用できます。異なる種類のデータ。例:

// 将字符串列表转换为整数列表
func mapToInts(strs []string) []int {
    return map(func(s string) int { return len(s) }, strs)
}
関数型変換により、高階関数をあらゆる種類のデータに柔軟に適用でき、コードの再利用性が向上します。

以上がgolang関数の型変換の性能比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。