BDE 3.94.0 Release

Schedule

  • The BDE team announces that the BDE 3.94.0 production release was completed on Tuesday, November 23, 2021.

BDE 3.94.0 Highlights

Update to Internal Pooling of BALL Log Records

The way in which BALL log records are pooled internally was changed to eliminate a memory allocation that occurred for each log message. Removal of this undesirable allocation was vetted for potential adverse performance effects via a microbenchmark. See the Timings for Old vs. New Pooling of BALL Log Records section at the end of these release notes for details.

Fixed requests: 3.94.0

Summary

Update BALL to pool memory for bsl::shared_ptr<ball::Record> objects

Benchmark pooling ball log streams

support type conversion for ManagedPtr

baljsn_datumutil incorrectly decodes escaped forward-slash in object keys

‘balcl_commandline’: runtime error observed.

a_cdb2: convert deprecated types.

Is the example copyright epilogue block in the coding standards up to date?

bsls::SystemTime::nowMonotonicClock() - specify in terms of std::chrono::steady_clock

Add buffer sizes to NumericFormatterUtil

‘bslh_hashpair.t.cpp’: Nightly build issues

Please move away from python3 symlink - bdebuild

Test failure bslalg_numericformatterutil.t.cpp w/ Linux C++03

Release BDE 3.94.0

Timings for Old vs. New Pooling of BALL Log Records

The microbenchmark consisted of a function that logs (via a ball_log macro) 100K messages in a tight loop, either recording all of them or publishing all of them. This function was executed within 1 to 10 threads on IBM, Linux, Sun, and Windows. The numbers shown in the following two tables are elapsed times in seconds, with the times for the previous release on the lefthand side of the arrows. The three entries for Sun marked with * are the only ones showing an adverse effect from the new pooling strategy.

Timings When All Log Messages Are Recorded

# of threads

IBM

Linux

Sun

Windows

1

1.06 → 0.88

0.75 → 0.62

* 2.12 → 2.83

0.40 → 0.29

2

3.96 → 1.37

2.84 → 1.46

3.64 → 3.42

2.07 → 0.66

3

6.18 → 2.06

4.04 → 2.27

4.82 → 3.90

3.83 → 1.23

4

8.31 → 2.98

5.00 → 3.40

6.78 → 4.22

5.35 → 1.62

5

10.24 → 4.84

5.87 → 4.24

8.41 → 4.57

7.22 → 1.98

6

13.11 → 6.64

6.26 → 4.85

8.28 → 5.15

8.19 → 2.73

7

15.06 → 8.36

6.71 → 5.61

8.67 → 6.59

9.87 → 3.21

8

19.22 → 10.93

7.14 → 6.89

11.24 → 8.20

11.63 → 3.43

9

20.45 → 12.93

7.78 → 7.33

13.78 → 9.43

13.4 → 3.92

10

24.84 → 15.79

8.43 → 7.84

16.21 → 10.47

14.66 → 4.33

Timings When All Log Messages Are Published

# of threads

IBM

Linux

Sun

Windows

1

1.13 → 0.94

0.71 → 0.71

* 2.34 → 3.13

0.43 → 0.32

2

3.00 → 1.43

1.69 → 1.61

* 3.63 → 3.84

1.49 → 0.53

3

4.26 → 2.06

2.66 → 1.94

4.78 → 4.07

2.38 → 0.87

4

6.51 → 2.46

3.72 → 2.53

5.67 → 4.43

3.14 → 1.31

5

9.46 → 3.17

4.66 → 2.92

8.40 → 4.59

3.77 → 1.64

6

11.62 → 3.73

5.64 → 3.34

11.08 → 4.85

4.73 → 1.97

7

15.16 → 5.30

6.61 → 3.32

13.57 → 4.97

5.95 → 2.52

8

18.06 → 7.01

7.78 → 3.85

16.56 → 5.24

7.49 → 3.03

9

22.09 → 8.96

9.24 → 4.38

18.09 → 5.71

8.45 → 3.49

10

25.22 → 10.68

12.88 → 5.00

20.68 → 7.13

9.43 → 4.10