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

WBOY
リリース: 2024-05-03 08:03:01
オリジナル
1082 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!