Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Performance

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 19. Boost.Lexical_Cast 1.0

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

В большинстве случаевповышение:lexical_castБыстрее, чем,Printf,std:струнный поток. Для более подробной информации вы можете посмотреть на таблицы ниже.

Все тесты измеряют скорость выполнения в миллисекундах для 10000 итераций следующих кодовых блоков:

Table 19.1. Tests source code

Тестовое имя

Код

lexical_castlexical_cast

[ORIG_END] -->

_out=boost::lexical_cast<OUTTYPE>_in;

std::stringstream в строительстве

стрингстримss;ss;ss.ss.бросокбросокбросокбросокбросокбросокбросоклогическая ошибка:логическая ошибкалогическая ошибка]ssss[

Stringstream без строительства

// ss является экземпляром std::stringstreamssбросоклогическая ошибкаss_out_outss

сканф/печатьf

[ORIG_END] -->

ИмяOUTTYPE::значение_тип500[char]*]буфер


Самые быстрые результаты подсвечиваются «!!!х!!!». Не используйте эти результаты для сравнения компиляторов, поскольку тесты проводились на разных аппаратных средствах.

Table 19.2. Performance Table ( GNU C++ version 6.1.1 20160511)

От >к

lexical_castlexical_cast

[ORIG_END] -->

std::stringstream в строительстве

Stringstream без строительства

сканф/печатьf

[ORIG_END] -->

струна->char

!!!<1!!!

59

4

4

строка->подписанный шар

!!!<1!!!

52

4

5

строка->неподписанный char

!!!<1!!!

54

4

5

струна->int

!!!4!!!

61

19

12

строка->короткий

!!!4!!!

59

11

8

string->long int

!!!4!!!

59

9

8

струна->длинная длина

!!!6!!!

61

10

10

string->unsigned int

!!!4!!!

59

9

9

строка->короткий

!!!4!!!

60

9

8

строка->короткий

!!!4!!!

60

9

8

строка->короткий

!!!4!!!

70

21

21

струна->плавание

91

152

59

!!!40!!!

стринг->двойной

86

140

58

!!!28!!!

строка->длинный двойной

48

90

34

!!!22!!!

string->array

!!!<1!!!

59

9

10

струна->струна

!!!2!!!

129

29

---

строка->контейнер::струна

!!!1!!!

70

11

---

струна->char

!!!4!!!

99

27

20

строка->подписанный шар

!!!9!!!

101

13

12

строка->неподписанный char

!!!4!!!

86

27

27

int->string

!!!9!!!

89

17

14

коротко->струна

!!!7!!!

71

17

15

длинный int->струна

!!!7!!!

71

18

19

длинно-длинная струна

!!!13!!!

127

34

25

unsigned int->string

16

117

17

!!!12!!!

неподписанный короткий & gt; струна

!!!8!!!

71

16

12

unsigned long int->string

!!!12!!!

100

36

26

unsigned long long->string

!!!14!!!

97

21

17

float->string

70

97

43

!!!25!!!

двойная струна

130

155

51

!!!25!!!

длинная двойная струна

104

160

!!!47!!!

57

char*->char

!!!<1!!!

95

4

4

char*->signed char

!!!<1!!!

52

7

13

char*->unsigned char

!!!<1!!!

106

11

13

char*->int

!!!6!!!

118

22

21

char*->short

!!!7!!!

104

10

19

char*->long int

!!!8!!!

112

24

14

char*->long long

!!!4!!!

90

17

9

char*->unsigned int

!!!4!!!

103

23

22

char*->unsigned short

!!!7!!!

82

9

8

char*->unsigned long int

!!!5!!!

58

20

8

char*->unsigned long long

!!!4!!!

60

10

11

char*->float

58

103

!!!32!!!

37

char*->double

52

155

32

!!!27!!!

char*->long double

72

135

51

!!!30!!!

char*->array

!!!<1!!!

80

23

17

char*->string

!!!10!!!

150

18

---

char*->контейнер::струна

!!!<1!!!

64

11

---

неподписанный char*->char

!!!<1!!!

52

4

4

unsigned char*->signed char

!!!<1!!!

54

4

5

unsigned char*->unsigned char

!!!<1!!!

54

4

5

неподписанный char*->int

!!!4!!!

59

10

8

unsigned char*->short

!!!4!!!

59

10

8

unsigned char*->long int

!!!4!!!

66

24

19

unsigned char*->long long

!!!4!!!

59

10

8

unsigned char*->unsigned int

!!!4!!!

79

24

22

unsigned char*->unsigned short

!!!7!!!

123

23

22

unsigned char*->unsigned long int

!!!8!!!

121

24

22

unsigned char*->unsigned long long

!!!8!!!

121

24

22

неподписанный char*->float

97

167

67

!!!47!!!

неподписанный char*->double

96

164

67

!!!47!!!

двойная струна

97

165

66

!!!47!!!

unsigned char*->array

!!!<1!!!

119

22

17

unsigned char*->string

!!!11!!!

139

34

---

неподписанный char*->контейнер::струна

!!!1!!!

121

25

---

подписан char*->char

!!!<1!!!

106

11

8

подписанный char*->подписанный char

!!!<1!!!

81

12

13

подписанный char*->неподписанный char

!!!<1!!!

109

11

12

подписан char*->int

!!!7!!!

122

24

21

подписан char*->short

!!!4!!!

59

10

8

подписан char*->long int

!!!4!!!

60

10

8

подписанный char*->длинный

!!!4!!!

60

10

8

подписанный char*->подписанный char

!!!4!!!

64

23

22

подписанный char*->подписанный char

!!!7!!!

120

24

22

подписанный char*->неподписанный long int

!!!8!!!

121

24

22

подписан char*->неподписан долго

!!!8!!!

122

23

22

подписан char*->float

95

165

68

!!!46!!!

подписан char*->double

95

161

66

!!!47!!!

подписан char*->long double

96

161

66

!!!46!!!

подписан char*->array

!!!<1!!!

117

22

17

подписан char*->string

!!!10!!!

84

15

---

подписан char*->контейнер::струна

!!!1!!!

119

25

---

iterator_range->char

!!!<1!!!

111

16

11

iterator_range->signed char

!!!<1!!!

110

16

13

iterator_range->unsigned char

!!!<1!!!

111

15

13

iterator_range->int

!!!6!!!

119

25

22

iterator_range->short

!!!7!!!

119

25

22

iterator_range->long int

!!!7!!!

120

25

22

iterator_range->long long

!!!8!!!

119

24

22

iterator_range->unsigned int

!!!6!!!

119

24

22

iterator_range->unsigned short

!!!6!!!

117

24

22

iterator_range->unsigned long int

!!!7!!!

120

24

22

iterator_range->unsigned long long

!!!8!!!

118

24

22

iterator_range->float

96

155

48

!!!47!!!

iterator_range->double

96

141

47

!!!47!!!

iterator_range->long double

96

140

46

!!!46!!!

iterator_range->array

!!!<1!!!

118

25

17

iterator_range->string

!!!10!!!

136

35

---

iterator_range->контейнер::струна

!!!1!!!

119

26

---

array->char

!!!<1!!!

108

11

10

array->signed char

!!!<1!!!

106

12

12

array->unsigned char

!!!<1!!!

107

11

13

array->int

!!!6!!!

119

24

22

array->short

!!!7!!!

121

24

22

array->long int

!!!7!!!

119

24

22

array->long long

!!!7!!!

123

24

22

array->unsigned int

!!!7!!!

121

23

25

array->unsigned short

!!!6!!!

120

24

22

array->unsigned int

!!!7!!!

59

10

9

array->unsigned long long

!!!4!!!

60

10

8

array->float

47

80

32

!!!22!!!

array->double

46

82

1864 31 1865

!!!22!!!

array->long double

49

82

1864 31 1865

!!!22!!!

array->array

!!!1!!!

59

9

7

array->string

!!!5!!!

70

15

---

array->контейнер::струна

!!!1!!!

60

11

---

int->int

!!!<1!!!

61

12

---

1942 флоат->двойной (1943)

!!!<1!!!

111

54

---

char->signed char

!!!<1!!!

51

4

---


Table 19.3. Performance Table ( GNU C++ version 4.8.5)

От >к

lexical_castlexical_cast

[ORIG_END] -->

std::stringstream в строительстве

Stringstream без строительства

сканф/печатьf

[ORIG_END] -->

струна->char

!!!<1!!!

100

10

10

строка->подписанный шар

!!!<1!!!

97

9

11

строка->неподписанный char

!!!<1!!!

103

11

13

струна->int

!!!6!!!

122

23

22

строка->короткий

!!!6!!!

116

23

22

string->long int

!!!6!!!

97

21

22

струна->длинная длина

!!!7!!!

118

22

22

string->unsigned int

!!!6!!!

116

22

22

строка->короткий

!!!6!!!

106

9

8

строка->короткий

!!!3!!!

59

9

8

строка->короткий

!!!3!!!

58

9

8

струна->плавание

88

166

70

!!!47!!!

стринг->двойной

102

162

65

!!!51!!!

строка->длинный двойной

96

163

71

!!!46!!!

string->array

!!!1!!!

112

21

18

струна->струна

!!!2!!!

139

37

---

строка->контейнер::струна

!!!1!!!

121

24

---

струна->char

!!!9!!!

121

1864 31 1865

21

строка->подписанный шар

!!!9!!!

121

1864 31 1865

34

строка->неподписанный char

!!!9!!!

120

1864 31 1865

30

int->string

!!!17!!!

141

39

30

коротко->струна

!!!18!!!

142

39

30

длинный int->струна

17

136

17

!!!12!!!

длинно-длинная струна

!!!7!!!

69

17

13

unsigned int->string

!!!8!!!

70

24

13

неподписанный короткий & gt; струна

!!!7!!!

69

17

12

unsigned long int->string

!!!7!!!

71

16

12

unsigned long long->string

!!!7!!!

71

16

12

float->string

60

95

49

!!!24!!!

двойная струна

68

97

45

!!!26!!!

длинная двойная струна

72

108

45

!!!28!!!

char*->char

!!!<1!!!

52

5

4

char*->signed char

!!!<1!!!

52

5

5

char*->unsigned char

!!!<1!!!

52

5

5

char*->int

!!!3!!!

60

10

8

char*->short

!!!3!!!

61

10

8

char*->long int

!!!4!!!

60

10

8

char*->long long

!!!4!!!

61

9

8

char*->unsigned int

!!!3!!!

103

13

8

char*->unsigned short

!!!3!!!

97

23

22

char*->unsigned long int

!!!7!!!

123

23

22

char*->unsigned long long

!!!6!!!

72

10

8

char*->float

85

160

66

!!!47!!!

char*->double

94

161

65

!!!46!!!

char*->long double

94

172

64

!!!47!!!

char*->array

!!!2!!!

113

22

16

char*->string

!!!10!!!

145

34

---

char*->контейнер::струна

!!!1!!!

120

25

---

неподписанный char*->char

!!!<1!!!

102

11

10

unsigned char*->signed char

!!!<1!!!

100

12

12

unsigned char*->unsigned char

!!!<1!!!

102

11

12

неподписанный char*->int

!!!7!!!

119

24

22

unsigned char*->short

!!!7!!!

120

24

22

unsigned char*->long int

!!!7!!!

119

24

23

unsigned char*->long long

!!!7!!!

119

24

22

unsigned char*->unsigned int

!!!6!!!

82

9

8

unsigned char*->unsigned short

!!!3!!!

58

9

8

unsigned char*->unsigned long int

!!!4!!!

59

10

10

unsigned char*->unsigned long long

!!!4!!!

60

12

8

неподписанный char*->float

47

80

32

!!!22!!!

неподписанный char*->double

47

79

1864 31 1865

!!!23!!!

двойная струна

47

80

1864 31 1865

!!!22!!!

unsigned char*->array

!!!1!!!

58

9

7

unsigned char*->string

!!!4!!!

68

15

---

неподписанный char*->контейнер::струна

!!!<1!!!

60

10

---

подписан char*->char

!!!<1!!!

52

5

4

подписанный char*->подписанный char

!!!<1!!!

54

4

5

подписанный char*->неподписанный char

!!!<1!!!

52

4

6

подписан char*->int

!!!6!!!

59

10

8

подписан char*->short

!!!3!!!

59

10

8

подписан char*->long int

!!!4!!!

60

10

8

подписанный char*->длинный

!!!4!!!

59

10

9

подписанный char*->подписанный char

!!!3!!!

58

9

8

подписанный char*->подписанный char

!!!4!!!

58

9

8

подписанный char*->неподписанный long int

!!!4!!!

59

10

8

подписан char*->неподписан долго

!!!4!!!

59

10

8

подписан char*->float

47

81

32

!!!25!!!

подписан char*->double

46

79

1864 31 1865

!!!22!!!

подписан char*->long double

48

80

32

!!!22!!!

подписан char*->array

!!!1!!!

63

9

7

подписан char*->string

!!!4!!!

68

15

---

подписан char*->контейнер::струна

!!!<1!!!

58

10

---

iterator_range->char

!!!<1!!!

54

6

4

iterator_range->signed char

!!!<1!!!

57

6

5

iterator_range->unsigned char

!!!<1!!!

54

6

5

iterator_range->int

!!!3!!!

59

10

8

iterator_range->short

!!!3!!!

59

11

9

iterator_range->long int

!!!3!!!

61

11

8

iterator_range->long long

!!!3!!!

59

10

9

iterator_range->unsigned int

!!!3!!!

57

9

8

iterator_range->unsigned short

!!!3!!!

59

10

8

iterator_range->unsigned long int

!!!3!!!

58

10

8

iterator_range->unsigned long long

!!!3!!!

58

15

8

iterator_range->float

46

78

22

!!!22!!!

iterator_range->double

94

85

!!!21!!!

22

iterator_range->long double

47

79

33

!!!22!!!

iterator_range->array

!!!1!!!

102

25

16

iterator_range->string

!!!10!!!

96

16

---

iterator_range->контейнер::струна

!!!<1!!!

64

11

---

array->char

!!!<1!!!

75

4

4

array->signed char

!!!<1!!!

54

6

13

array->unsigned char

!!!<1!!!

103

12

12

array->int

!!!6!!!

121

25

23

array->short

!!!7!!!

122

24

22

array->long int

!!!7!!!

119

24

22

array->long long

!!!7!!!

120

24

22

array->unsigned int

!!!6!!!

121

23

22

array->unsigned short

!!!6!!!

121

23

22

array->unsigned int

!!!6!!!

118

24

20

array->unsigned long long

!!!6!!!

109

22

21

array->float

93

150

61

!!!43!!!

array->double

89

147

61

!!!43!!!

array->long double

91

148

61

!!!42!!!

array->array

!!!2!!!

106

21

15

array->string

!!!10!!!

124

32

---

array->контейнер::струна

!!!1!!!

109

23

---

int->int

!!!<1!!!

114

26

---

1942 флоат->двойной (1943)

!!!<1!!!

207

105

---

char->signed char

!!!<1!!!

97

10

---


Table 19.4. Performance Table ( Clang version 3.6.0 (tags/RELEASE_360/final))

От >к

lexical_castlexical_cast

[ORIG_END] -->

std::stringstream в строительстве

Stringstream без строительства

сканф/печатьf

[ORIG_END] -->

струна->char

!!!<1!!!

79

4

4

строка->подписанный шар

!!!<1!!!

51

4

5

строка->неподписанный char

!!!<1!!!

51

4

5

струна->int

!!!3!!!

80

22

22

строка->короткий

!!!6!!!

108

22

22

string->long int

!!!6!!!

66

10

11

струна->длинная длина

!!!6!!!

101

9

20

string->unsigned int

!!!5!!!

77

8

8

строка->короткий

!!!3!!!

61

8

8

строка->короткий

!!!5!!!

87

9

9

строка->короткий

!!!3!!!

89

9

8

струна->плавание

52

114

38

!!!22!!!

стринг->двойной

49

79

32

!!!22!!!

строка->длинный двойной

83

160

65

!!!47!!!

string->array

!!!<1!!!

114

21

16

струна->струна

!!!2!!!

78

34

---

строка->контейнер::струна

!!!1!!!

100

11

---

струна->char

!!!4!!!

60

16

7

строка->подписанный шар

!!!5!!!

70

30

30

строка->неподписанный char

!!!10!!!

119

1864 31 1865

30

int->string

!!!17!!!

140

38

28

коротко->струна

!!!17!!!

139

38

29

длинный int->струна

!!!17!!!

139

37

29

длинно-длинная струна

!!!18!!!

138

37

30

unsigned int->string

!!!17!!!

138

37

29

неподписанный короткий & gt; струна

!!!17!!!

139

38

29

unsigned long int->string

!!!17!!!

142

37

29

unsigned long long->string

!!!8!!!

71

16

28

float->string

68

97

42

!!!38!!!

двойная струна

68

134

43

!!!25!!!

длинная двойная струна

72

164

91

!!!55!!!

char*->char

!!!<1!!!

76

4

5

char*->signed char

!!!<1!!!

54

5

5

char*->unsigned char

!!!<1!!!

55

4

5

char*->int

!!!3!!!

60

10

8

char*->short

!!!3!!!

61

9

8

char*->long int

!!!4!!!

61

9

8

char*->long long

!!!3!!!

60

9

8

char*->unsigned int

!!!3!!!

59

8

9

char*->unsigned short

!!!3!!!

59

10

8

char*->unsigned long int

!!!3!!!

59

10

8

char*->unsigned long long

!!!3!!!

59

10

8

char*->float

48

80

32

!!!25!!!

char*->double

48

81

32

!!!22!!!

char*->long double

48

90

1864 31 1865

!!!22!!!

char*->array

!!!<1!!!

59

9

7

char*->string

!!!4!!!

77

15

---

char*->контейнер::струна

!!!1!!!

62

12

---

неподписанный char*->char

!!!<1!!!

54

4

5

unsigned char*->signed char

!!!<1!!!

53

4

5

unsigned char*->unsigned char

!!!<1!!!

57

4

5

неподписанный char*->int

!!!3!!!

63

24

24

unsigned char*->short

!!!5!!!

65

9

9

unsigned char*->long int

!!!3!!!

60

10

8

unsigned char*->long long

!!!4!!!

67

23

23

unsigned char*->unsigned int

!!!5!!!

116

23

22

unsigned char*->unsigned short

!!!5!!!

114

22

22

unsigned char*->unsigned long int

!!!6!!!

118

23

22

unsigned char*->unsigned long long

!!!6!!!

116

23

22

неподписанный char*->float

93

160

66

!!!47!!!

неподписанный char*->double

93

158

64

!!!46!!!

двойная струна

93

158

64

!!!46!!!

unsigned char*->array

!!!<1!!!

112

21

17

unsigned char*->string

!!!10!!!

136

33

---

неподписанный char*->контейнер::струна

!!!<1!!!

117

26

---

подписан char*->char

!!!<1!!!

102

11

10

подписанный char*->подписанный char

!!!<1!!!

102

11

12

подписанный char*->неподписанный char

!!!<1!!!

102

11

12

подписан char*->int

!!!5!!!

119

23

22

подписан char*->short

!!!5!!!

116

23

22

подписан char*->long int

!!!6!!!

116

23

22

подписанный char*->длинный

!!!6!!!

115

23

22

подписанный char*->подписанный char

!!!5!!!

116

23

22

подписанный char*->подписанный char

!!!5!!!

114

22

22

подписанный char*->неподписанный long int

!!!6!!!

92

9

8

подписан char*->неподписан долго

!!!3!!!

60

9

10

подписан char*->float

94

134

51

!!!28!!!

подписан char*->double

47

80

1864 31 1865

!!!22!!!

подписан char*->long double

90

115

64

!!!25!!!

подписан char*->array

!!!<1!!!

97

22

17

подписан char*->string

!!!11!!!

139

34

---

подписан char*->контейнер::струна

!!!<1!!!

118

26

---

iterator_range->char

!!!<1!!!

106

15

10

iterator_range->signed char

!!!<1!!!

107

15

13

iterator_range->unsigned char

!!!<1!!!

107

15

12

iterator_range->int

!!!5!!!

117

25

22

iterator_range->short

!!!5!!!

116

25

22

iterator_range->long int

!!!6!!!

114

22

20

iterator_range->long long

!!!5!!!

106

23

22

iterator_range->unsigned int

!!!5!!!

104

21

20

iterator_range->unsigned short

!!!5!!!

105

22

20

iterator_range->unsigned long int

!!!5!!!

106

22

20

iterator_range->unsigned long long

!!!5!!!

105

23

20

iterator_range->float

89

140

!!!42!!!

43

iterator_range->double

88

127

43

!!!43!!!

iterator_range->long double

88

127

43

!!!43!!!

iterator_range->array

!!!<1!!!

104

22

15

iterator_range->string

!!!9!!!

122

32

---

iterator_range->контейнер::струна

!!!<1!!!

105

24

---

array->char

!!!<1!!!

68

4

4

array->signed char

!!!<1!!!

47

4

5

array->unsigned char

!!!<1!!!

48

4

5

array->int

!!!3!!!

53

9

8

array->short

!!!3!!!

54

9

8

array->long int

!!!3!!!

54

8

7

array->long long

!!!3!!!

53

8

8

array->unsigned int

!!!3!!!

52

7

8

array->unsigned short

!!!3!!!

53

8

7

array->unsigned int

!!!3!!!

53

8

8

array->unsigned long long

!!!3!!!

53

9

8

array->float

43

72

29

!!!20!!!

array->double

42

72

28

!!!20!!!

array->long double

43

72

28

!!!20!!!

array->array

!!!<1!!!

53

8

6

array->string

!!!4!!!

62

13

---

array->контейнер::струна

!!!1!!!

54

10

---

int->int

!!!<1!!!

57

10

---

1942 флоат->двойной (1943)

!!!<1!!!

102

49

---

char->signed char

!!!<1!!!

49

3

---



PrevUpHomeNext

Статья Performance раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 19. Boost.Lexical_Cast 1.0 может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 19. Boost.Lexical_Cast 1.0 ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:16:31/0.016113042831421/0