go 메모리 정렬
설명:
Source And Sink
package pipeline
import (
"encoding/binary"
"fmt"
"io"
"math/rand"
"sort"
"time"
)
var startTime time.Time
func Init() {
startTime = time.Now()
}
func ArraySource(a ...int) chan int {
out := make(chan int)
go func() {
for _, v := range a {
out 0 {
v := int(binary.BigEndian.Uint64(buffer))
out = chunkSize) {
break
}
}
close(out)
}()
return out
}
func WriteSink(writer io.Writer, in
testfile 파일 생성
테스트 파일 생성(small.in/large.in), 대응하는 작은 파일과 큰 파일package main
import (
"bufio"
"fmt"
"os"
"pipeline"
)
//
//const FILE_NAME = "small.in"
//const N = 64
//
const FILE_NAME = "large.in"
const N = 1000000
func main() {
file, e := os.Create(FILE_NAME)
if e != nil {
panic(e)
}
defer file.Close()
p := pipeline.RandomSource(N)
writer := bufio.NewWriter(file)
pipeline.WriteSink(writer, p)
writer.Flush()
file, e = os.Open(FILE_NAME)
if e != nil {
panic(e)
}
defer file.Close()
p = pipeline.ReaderSource(file, -1)
count := 0
for v := range p {
count++
if count < 100 {
fmt.Println(v)
}
}
}
//
func main0() {
p := pipeline.Merge(
pipeline.InMemSort(pipeline.ArraySource(8, 2, 3, 0, 1)),
pipeline.InMemSort(pipeline.ArraySource(9, 7)),
)
for v := range p {
fmt.Println(v)
}
}
네트워크 정렬 사용
package pipeline
import (
"bufio"
"net"
)
func NetworkSink(addr string, in
테스트 주 방법
package main
import (
"bufio"
"fmt"
"os"
"pipeline"
"strconv"
)
func main2() {
p := createNetworkPipeline("large.in", 8000000, 4)
writeToFile(p, "large-networkpipeline.out")
printFile("large-networkpipeline.out")
}
func main1() {
p := createPipeline("large.in", 8000000 , 4)
writeToFile(p, "large-pipeline.out")
printFile("large-pipeline.out")
}
func printFile(filename string) {
file, err := os.Open(filename)
if err != nil {
panic(err)
}
defer file.Close()
p := pipeline.ReaderSource(file, -1)
count := 0
for v := range p {
if count < 100 {
fmt.Println(v)
count ++
}
}
}
func writeToFile(p
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
package pipeline
import (
"encoding/binary"
"fmt"
"io"
"math/rand"
"sort"
"time"
)
var startTime time.Time
func Init() {
startTime = time.Now()
}
func ArraySource(a ...int) chan int {
out := make(chan int)
go func() {
for _, v := range a {
out 0 {
v := int(binary.BigEndian.Uint64(buffer))
out = chunkSize) {
break
}
}
close(out)
}()
return out
}
func WriteSink(writer io.Writer, in
package main
import (
"bufio"
"fmt"
"os"
"pipeline"
)
//
//const FILE_NAME = "small.in"
//const N = 64
//
const FILE_NAME = "large.in"
const N = 1000000
func main() {
file, e := os.Create(FILE_NAME)
if e != nil {
panic(e)
}
defer file.Close()
p := pipeline.RandomSource(N)
writer := bufio.NewWriter(file)
pipeline.WriteSink(writer, p)
writer.Flush()
file, e = os.Open(FILE_NAME)
if e != nil {
panic(e)
}
defer file.Close()
p = pipeline.ReaderSource(file, -1)
count := 0
for v := range p {
count++
if count < 100 {
fmt.Println(v)
}
}
}
//
func main0() {
p := pipeline.Merge(
pipeline.InMemSort(pipeline.ArraySource(8, 2, 3, 0, 1)),
pipeline.InMemSort(pipeline.ArraySource(9, 7)),
)
for v := range p {
fmt.Println(v)
}
}
package pipeline
import (
"bufio"
"net"
)
func NetworkSink(addr string, in
package main
import (
"bufio"
"fmt"
"os"
"pipeline"
"strconv"
)
func main2() {
p := createNetworkPipeline("large.in", 8000000, 4)
writeToFile(p, "large-networkpipeline.out")
printFile("large-networkpipeline.out")
}
func main1() {
p := createPipeline("large.in", 8000000 , 4)
writeToFile(p, "large-pipeline.out")
printFile("large-pipeline.out")
}
func printFile(filename string) {
file, err := os.Open(filename)
if err != nil {
panic(err)
}
defer file.Close()
p := pipeline.ReaderSource(file, -1)
count := 0
for v := range p {
if count < 100 {
fmt.Println(v)
count ++
}
}
}
func writeToFile(p
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.