PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
// Copyright (C) MongoDB, Inc. 2017-present. // // Licensed under the Apache License, Version 2.0 (the "License"); you may // not use this file except in compliance with the License. You may obtain // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 package bson import ( "bytes" "compress/gzip" "encoding/json" "fmt" "io" "io/ioutil" "os" "path" "sync" "testing" ) type encodetest struct { Field1String string Field1Int64 int64 Field1Float64 float64 Field2String string Field2Int64 int64 Field2Float64 float64 Field3String string Field3Int64 int64 Field3Float64 float64 Field4String string Field4Int64 int64 Field4Float64 float64 } type nestedtest1 struct { Nested nestedtest2 } type nestedtest2 struct { Nested nestedtest3 } type nestedtest3 struct { Nested nestedtest4 } type nestedtest4 struct { Nested nestedtest5 } type nestedtest5 struct { Nested nestedtest6 } type nestedtest6 struct { Nested nestedtest7 } type nestedtest7 struct { Nested nestedtest8 } type nestedtest8 struct { Nested nestedtest9 } type nestedtest9 struct { Nested nestedtest10 } type nestedtest10 struct { Nested nestedtest11 } type nestedtest11 struct { Nested encodetest } var encodetestInstance = encodetest{ Field1String: "foo", Field1Int64: 1, Field1Float64: 3.0, Field2String: "bar", Field2Int64: 2, Field2Float64: 3.1, Field3String: "baz", Field3Int64: 3, Field3Float64: 3.14, Field4String: "qux", Field4Int64: 4, Field4Float64: 3.141, } var nestedInstance = nestedtest1{ nestedtest2{ nestedtest3{ nestedtest4{ nestedtest5{ nestedtest6{ nestedtest7{ nestedtest8{ nestedtest9{ nestedtest10{ nestedtest11{ encodetest{ Field1String: "foo", Field1Int64: 1, Field1Float64: 3.0, Field2String: "bar", Field2Int64: 2, Field2Float64: 3.1, Field3String: "baz", Field3Int64: 3, Field3Float64: 3.14, Field4String: "qux", Field4Int64: 4, Field4Float64: 3.141, }, }, }, }, }, }, }, }, }, }, }, } const extendedBSONDir = "../testdata/extended_bson" var ( extJSONFiles map[string]map[string]interface{} extJSONFilesMu sync.Mutex ) // readExtJSONFile reads the GZIP-compressed extended JSON document from the given filename in the // "extended BSON" test data directory (../testdata/extended_bson) and returns it as a // map[string]interface{}. It panics on any errors. func readExtJSONFile(filename string) map[string]interface{} { extJSONFilesMu.Lock() defer extJSONFilesMu.Unlock() if v, ok := extJSONFiles[filename]; ok { return v } filePath := path.Join(extendedBSONDir, filename) file, err := os.Open(filePath) if err != nil { panic(fmt.Sprintf("error opening file %q: %s", filePath, err)) } defer func() { _ = file.Close() }() gz, err := gzip.NewReader(file) if err != nil { panic(fmt.Sprintf("error creating GZIP reader: %s", err)) } defer func() { _ = gz.Close() }() data, err := ioutil.ReadAll(gz) if err != nil { panic(fmt.Sprintf("error reading GZIP contents of file: %s", err)) } var v map[string]interface{} err = UnmarshalExtJSON(data, false, &v) if err != nil { panic(fmt.Sprintf("error unmarshalling extended JSON: %s", err)) } if extJSONFiles == nil { extJSONFiles = make(map[string]map[string]interface{}) } extJSONFiles[filename] = v return v } func BenchmarkMarshal(b *testing.B) { cases := []struct { desc string value interface{} }{ { desc: "simple struct", value: encodetestInstance, }, { desc: "nested struct", value: nestedInstance, }, { desc: "deep_bson.json.gz", value: readExtJSONFile("deep_bson.json.gz"), }, { desc: "flat_bson.json.gz", value: readExtJSONFile("flat_bson.json.gz"), }, { desc: "full_bson.json.gz", value: readExtJSONFile("full_bson.json.gz"), }, } for _, tc := range cases { b.Run(tc.desc, func(b *testing.B) { b.Run("BSON", func(b *testing.B) { for i := 0; i < b.N; i++ { _, err := Marshal(tc.value) if err != nil { b.Errorf("error marshalling BSON: %s", err) } } }) b.Run("extJSON", func(b *testing.B) { for i := 0; i < b.N; i++ { _, err := MarshalExtJSON(tc.value, true, false) if err != nil { b.Errorf("error marshalling extended JSON: %s", err) } } }) b.Run("JSON", func(b *testing.B) { for i := 0; i < b.N; i++ { _, err := json.Marshal(tc.value) if err != nil { b.Errorf("error marshalling JSON: %s", err) } } }) }) } } func BenchmarkUnmarshal(b *testing.B) { cases := []struct { desc string value interface{} }{ { desc: "simple struct", value: encodetestInstance, }, { desc: "nested struct", value: nestedInstance, }, { desc: "deep_bson.json.gz", value: readExtJSONFile("deep_bson.json.gz"), }, { desc: "flat_bson.json.gz", value: readExtJSONFile("flat_bson.json.gz"), }, { desc: "full_bson.json.gz", value: readExtJSONFile("full_bson.json.gz"), }, } for _, tc := range cases { b.Run(tc.desc, func(b *testing.B) { b.Run("BSON", func(b *testing.B) { data, err := Marshal(tc.value) if err != nil { b.Errorf("error marshalling BSON: %s", err) return } b.ResetTimer() var v2 map[string]interface{} for i := 0; i < b.N; i++ { err := Unmarshal(data, &v2) if err != nil { b.Errorf("error unmarshalling BSON: %s", err) } } }) b.Run("extJSON", func(b *testing.B) { data, err := MarshalExtJSON(tc.value, true, false) if err != nil { b.Errorf("error marshalling extended JSON: %s", err) return } b.ResetTimer() var v2 map[string]interface{} for i := 0; i < b.N; i++ { err := UnmarshalExtJSON(data, true, &v2) if err != nil { b.Errorf("error unmarshalling extended JSON: %s", err) } } }) b.Run("JSON", func(b *testing.B) { data, err := json.Marshal(tc.value) if err != nil { b.Errorf("error marshalling JSON: %s", err) return } b.ResetTimer() var v2 map[string]interface{} for i := 0; i < b.N; i++ { err := json.Unmarshal(data, &v2) if err != nil { b.Errorf("error unmarshalling JSON: %s", err) } } }) }) } } // The following benchmarks are copied from the Go standard library's // encoding/json package. type codeResponse struct { Tree *codeNode `json:"tree"` Username string `json:"username"` } type codeNode struct { Name string `json:"name"` Kids []*codeNode `json:"kids"` CLWeight float64 `json:"cl_weight"` Touches int `json:"touches"` MinT int64 `json:"min_t"` MaxT int64 `json:"max_t"` MeanT int64 `json:"mean_t"` } var codeJSON []byte var codeBSON []byte var codeStruct codeResponse func codeInit() { f, err := os.Open("testdata/code.json.gz") if err != nil { panic(err) } defer f.Close() gz, err := gzip.NewReader(f) if err != nil { panic(err) } data, err := io.ReadAll(gz) if err != nil { panic(err) } codeJSON = data if err := json.Unmarshal(codeJSON, &codeStruct); err != nil { panic("json.Unmarshal code.json: " + err.Error()) } if data, err = json.Marshal(&codeStruct); err != nil { panic("json.Marshal code.json: " + err.Error()) } if codeBSON, err = Marshal(&codeStruct); err != nil { panic("Marshal code.json: " + err.Error()) } if !bytes.Equal(data, codeJSON) { println("different lengths", len(data), len(codeJSON)) for i := 0; i < len(data) && i < len(codeJSON); i++ { if data[i] != codeJSON[i] { println("re-marshal: changed at byte", i) println("orig: ", string(codeJSON[i-10:i+10])) println("new: ", string(data[i-10:i+10])) break } } panic("re-marshal code.json: different result") } } func BenchmarkCodeUnmarshal(b *testing.B) { b.ReportAllocs() if codeJSON == nil { b.StopTimer() codeInit() b.StartTimer() } b.Run("BSON", func(b *testing.B) { b.RunParallel(func(pb *testing.PB) { for pb.Next() { var r codeResponse if err := Unmarshal(codeBSON, &r); err != nil { b.Fatal("Unmarshal:", err) } } }) b.SetBytes(int64(len(codeBSON))) }) b.Run("JSON", func(b *testing.B) { b.RunParallel(func(pb *testing.PB) { for pb.Next() { var r codeResponse if err := json.Unmarshal(codeJSON, &r); err != nil { b.Fatal("json.Unmarshal:", err) } } }) b.SetBytes(int64(len(codeJSON))) }) } func BenchmarkCodeMarshal(b *testing.B) { b.ReportAllocs() if codeJSON == nil { b.StopTimer() codeInit() b.StartTimer() } b.Run("BSON", func(b *testing.B) { b.RunParallel(func(pb *testing.PB) { for pb.Next() { if _, err := Marshal(&codeStruct); err != nil { b.Fatal("Marshal:", err) } } }) b.SetBytes(int64(len(codeBSON))) }) b.Run("JSON", func(b *testing.B) { b.RunParallel(func(pb *testing.PB) { for pb.Next() { if _, err := json.Marshal(&codeStruct); err != nil { b.Fatal("json.Marshal:", err) } } }) b.SetBytes(int64(len(codeJSON))) }) }