"LogRoutine"의 두 판 사이의 차이

태그: 되돌려진 기여
 
(같은 사용자의 중간 판 하나는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;LogGen
;LogRoutine


<syntaxhighlight lang='go'>
<syntaxhighlight lang='go'>
24번째 줄: 24번째 줄:
}
}
}
}
prefix := fmt.Sprintf("GoroutineLogger %s", uuid.New().String()[:8])
prefix := fmt.Sprintf("LogRoutine %s", uuid.New().String()[:8])


var wg sync.WaitGroup
var wg sync.WaitGroup
38번째 줄: 38번째 줄:
elapsedTime := time.Since(startTime)
elapsedTime := time.Since(startTime)


fmt.Println("GoroutineLogger elapsed", elapsedTime)
fmt.Println("LogRoutine elapsed", elapsedTime)
}
}
</syntaxhighlight>
</syntaxhighlight>


[[분류: Go]]
[[분류: Go]]

2024년 8월 12일 (월) 23:49 기준 최신판

개요[ | ]

LogRoutine
package main

import (
	"fmt"
	"os"
	"strconv"
	"sync"
	"time"

	"github.com/google/uuid"
)

func main() {
	numLogs := 10
	if envNumLogs, exists := os.LookupEnv("NUM_LOGS"); exists {
		if parsedNumLogs, err := strconv.Atoi(envNumLogs); err == nil {
			numLogs = parsedNumLogs
		} else {
			fmt.Printf("Invalid NUM_LOGS value, using default: %d\n", numLogs)
		}
	}
	prefix := fmt.Sprintf("LogRoutine %s", uuid.New().String()[:8])

	var wg sync.WaitGroup
	startTime := time.Now()
	for i := 1; i <= numLogs; i++ {
		wg.Add(1)
		go func(index int) {
			defer wg.Done()
			fmt.Println(prefix, index)
		}(i)
	}
	wg.Wait()
	elapsedTime := time.Since(startTime)

	fmt.Println("LogRoutine elapsed", elapsedTime)
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}