v

Зеркало из https://github.com/vlang/v
Форк
0
100 строк · 2.2 Кб
1
import x.json2.decoder2
2
import json as old_json
3
import benchmark
4
import time
5

6
// ./v -prod crun vlib/x/json/tests/c.v
7
const max_iterations = 100_000
8
// const max_iterations = 10 // trying figure out it is slower in small loop. I guess it is `fulfill_nodes` related. Any suggestion?
9

10
pub struct Stru {
11
	val  int
12
	val2 string
13
	val3 Stru2
14
}
15

16
pub struct Stru2 {
17
	a         int
18
	churrasco string
19
}
20

21
type SumTypes = StructType[string] | bool | int | string | time.Time
22

23
enum Enum {
24
	a
25
	b
26
	c
27
	d
28
	e = 99
29
	f
30
}
31

32
struct StructType[T] {
33
mut:
34
	val T
35
}
36

37
struct StructTypeOption[T] {
38
mut:
39
	val ?T
40
}
41

42
struct StructTypePointer[T] {
43
mut:
44
	val &T
45
}
46

47
fn main() {
48
	json_data := '{"val": 1, "val2": "lala", "val3": {"a": 2, "churrasco": "leleu"}}'
49
	json_data1 := '{"val": "2"}'
50
	// json_data2 := '{"val": 2}'
51

52
	mut b := benchmark.start()
53

54
	// Stru **********************************************************
55

56
	for i := 0; i < max_iterations; i++ {
57
		_ := old_json.decode(Stru, json_data)!
58
	}
59

60
	b.measure('old_json.decode(Stru, json_data)!\n')
61

62
	// StructType[string] **********************************************************
63
	for i := 0; i < max_iterations; i++ {
64
		_ := decoder2.decode[StructType[string]](json_data1)!
65
	}
66

67
	b.measure('decoder2.decode[StructType[string]](json_data1)!')
68

69
	for i := 0; i < max_iterations; i++ {
70
		_ := old_json.decode(StructType[string], json_data1)!
71
	}
72

73
	b.measure('old_json.decode(StructType[string], json_data1)!\n')
74

75
	// StructTypeOption[string] **********************************************************
76
	for i := 0; i < max_iterations; i++ {
77
		_ := decoder2.decode[StructTypeOption[string]](json_data1)!
78
	}
79

80
	b.measure('decoder2.decode[StructTypeOption[string]](json_data1)!')
81

82
	for i := 0; i < max_iterations; i++ {
83
		_ := old_json.decode(StructTypeOption[string], json_data1)!
84
	}
85

86
	b.measure('old_json.decode(StructTypeOption[string], json_data1)!\n')
87

88
	// map[string]string **********************************************************
89
	for i := 0; i < max_iterations; i++ {
90
		_ := decoder2.decode[map[string]string](json_data1)!
91
	}
92

93
	b.measure('decoder2.decode[map[string]string](json_data1)!')
94

95
	for i := 0; i < max_iterations; i++ {
96
		_ := old_json.decode(map[string]string, json_data1)!
97
	}
98

99
	b.measure('old_json.decode(map[string]string, json_data1)!\n')
100
}
101

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.