Quellcode durchsuchen

Adjust number of children processes (#3765)

* Adjust number of children processes

* Trying to improve JSON performance

* Update code to match gojay's 1.0 release
David Cuadrado vor 7 Jahren
Ursprung
Commit
7c45c15091

+ 1 - 1
frameworks/Go/chi/src/chi-gojay/prefork.go

@@ -26,7 +26,7 @@ func doPrefork(isChild bool, bind string) (listener net.Listener) {
 		if err != nil {
 			log.Fatal(err)
 		}
-		children := make([]*exec.Cmd, runtime.NumCPU())
+		children := make([]*exec.Cmd, runtime.NumCPU()/2)
 		for i := range children {
 			args := make([]string, len(os.Args)-1)
 			copy(args, os.Args[1:])

+ 11 - 8
frameworks/Go/chi/src/chi-gojay/server.go

@@ -46,6 +46,9 @@ var (
 	debugFlag        = false
 	preforkFlag      = false
 	childFlag        = false
+
+	helloWorldMessage = &Message{helloWorldString}
+	extraFortune      = &Fortune{Message: extraFortuneMessage}
 )
 
 // Message is a JSON struct to render a message
@@ -53,8 +56,8 @@ type Message struct {
 	Message string
 }
 
-// MarshalObject encodes the message as JSON
-func (m *Message) MarshalObject(dec *gojay.Encoder) {
+// MarshalJSONObject encodes the message as JSON
+func (m *Message) MarshalJSONObject(dec *gojay.Encoder) {
 	dec.AddStringKey("message", m.Message)
 }
 
@@ -72,8 +75,8 @@ type World struct {
 // Worlds is a list of World
 type Worlds []World
 
-// MarshalArray marshals the list of worlds
-func (ws Worlds) MarshalArray(enc *gojay.Encoder) {
+// MarshalJSONArray marshals the list of worlds
+func (ws Worlds) MarshalJSONArray(enc *gojay.Encoder) {
 	for _, w := range ws {
 		enc.AddObject(&w)
 	}
@@ -84,8 +87,8 @@ func (ws Worlds) IsNil() bool {
 	return ws == nil
 }
 
-// MarshalObject encodes the message as JSON
-func (w *World) MarshalObject(dec *gojay.Encoder) {
+// MarshalJSONObject encodes the message as JSON
+func (w *World) MarshalJSONObject(dec *gojay.Encoder) {
 	dec.AddIntKey("id", int(w.ID))
 	dec.AddIntKey("randomNumber", int(w.RandomNumber))
 }
@@ -128,7 +131,7 @@ func setContentType(w http.ResponseWriter, contentType string) {
 func serializeJSON(w http.ResponseWriter, r *http.Request) {
 	setContentType(w, "application/json")
 
-	_ = gojay.NewEncoder(w).Encode(&Message{helloWorldString})
+	_ = gojay.NewEncoder(w).Encode(helloWorldMessage)
 }
 
 // Test 2: Single Database Query
@@ -190,7 +193,7 @@ func fortunes(w http.ResponseWriter, r *http.Request) {
 		fortunes = append(fortunes, &fortune)
 	}
 	rows.Close()
-	fortunes = append(fortunes, &Fortune{Message: extraFortuneMessage})
+	fortunes = append(fortunes, extraFortune)
 
 	sort.Slice(fortunes, func(i, j int) bool {
 		return fortunes[i].Message < fortunes[j].Message

+ 1 - 1
frameworks/Go/chi/src/chi-sjson/prefork.go

@@ -26,7 +26,7 @@ func doPrefork(isChild bool, bind string) (listener net.Listener) {
 		if err != nil {
 			log.Fatal(err)
 		}
-		children := make([]*exec.Cmd, runtime.NumCPU())
+		children := make([]*exec.Cmd, runtime.NumCPU()/2)
 		for i := range children {
 			args := make([]string, len(os.Args)-1)
 			copy(args, os.Args[1:])

+ 5 - 2
frameworks/Go/chi/src/chi-sjson/server.go

@@ -46,6 +46,9 @@ var (
 	debugFlag        = false
 	preforkFlag      = false
 	childFlag        = false
+
+	helloWorldMessage = &Message{helloWorldString}
+	extraFortune      = &Fortune{Message: extraFortuneMessage}
 )
 
 // sjson
@@ -125,7 +128,7 @@ func setContentType(w http.ResponseWriter, contentType string) {
 func serializeJSON(w http.ResponseWriter, r *http.Request) {
 	setContentType(w, "application/json")
 
-	data, _ := Message{helloWorldString}.MarshalJSON()
+	data, _ := helloWorldMessage.MarshalJSON()
 	_, _ = w.Write(data)
 }
 
@@ -190,7 +193,7 @@ func fortunes(w http.ResponseWriter, r *http.Request) {
 		fortunes = append(fortunes, &fortune)
 	}
 	rows.Close()
-	fortunes = append(fortunes, &Fortune{Message: extraFortuneMessage})
+	fortunes = append(fortunes, extraFortune)
 
 	sort.Slice(fortunes, func(i, j int) bool {
 		return fortunes[i].Message < fortunes[j].Message

+ 1 - 1
frameworks/Go/chi/src/chi/prefork.go

@@ -26,7 +26,7 @@ func doPrefork(isChild bool, bind string) (listener net.Listener) {
 		if err != nil {
 			log.Fatal(err)
 		}
-		children := make([]*exec.Cmd, runtime.NumCPU())
+		children := make([]*exec.Cmd, runtime.NumCPU()/2)
 		for i := range children {
 			args := make([]string, len(os.Args)-1)
 			copy(args, os.Args[1:])

+ 5 - 2
frameworks/Go/chi/src/chi/server.go

@@ -46,6 +46,9 @@ var (
 	debugFlag        = false
 	preforkFlag      = false
 	childFlag        = false
+
+	helloWorldMessage = &Message{helloWorldString}
+	extraFortune      = &Fortune{Message: extraFortuneMessage}
 )
 
 // Message is a JSON struct to render a message
@@ -91,7 +94,7 @@ func setContentType(w http.ResponseWriter, contentType string) {
 // Test 1: JSON Serialization
 func serializeJSON(w http.ResponseWriter, r *http.Request) {
 	setContentType(w, "application/json")
-	_ = json.NewEncoder(w).Encode(Message{helloWorldString})
+	_ = json.NewEncoder(w).Encode(helloWorldMessage)
 }
 
 // Test 2: Single Database Query
@@ -153,7 +156,7 @@ func fortunes(w http.ResponseWriter, r *http.Request) {
 		fortunes = append(fortunes, &fortune)
 	}
 	rows.Close()
-	fortunes = append(fortunes, &Fortune{Message: extraFortuneMessage})
+	fortunes = append(fortunes, extraFortune)
 
 	sort.Slice(fortunes, func(i, j int) bool {
 		return fortunes[i].Message < fortunes[j].Message