stock-glibc

Ubuntu 18.04 with stock glibc

Compare your own system(s) to this result file with the Phoronix Test Suite by running the command: phoronix-test-suite benchmark 1804073-FO-MERGE146218
Jump To Table - Results

View

Do Not Show Noisy Results
Do Not Show Results With Incomplete Data
Do Not Show Results With Little Change/Spread
List Notable Results

Limit displaying results to tests within:

C/C++ Compiler Tests 5 Tests
CPU Massive 8 Tests
Creator Workloads 4 Tests
Encoding 2 Tests
Multi-Core 5 Tests
Programmer / Developer System Benchmarks 2 Tests
Python Tests 2 Tests
Server CPU Tests 7 Tests
Single-Threaded 3 Tests
Video Encoding 2 Tests

Statistics

Show Overall Harmonic Mean(s)
Show Overall Geometric Mean
Show Geometric Means Per-Suite/Category
Show Wins / Losses Counts (Pie Chart)
Normalize Results
Remove Outliers Before Calculating Averages

Graph Settings

Force Line Graphs Where Applicable
Convert To Scalar Where Applicable
Prefer Vertical Bar Graphs

Multi-Way Comparison

Condense Multi-Option Tests Into Single Result Graphs

Table

Show Detailed System Result Table

Run Management

Highlight
Result
Hide
Result
Result
Identifier
Performance Per
Dollar
Date
Run
  Test
  Duration
stock-glibc
April 07 2018
 
tuned-glibc
April 07 2018
 
tuned-glibc-jemalloc
April 07 2018
 
Invert Hiding All Results Option
 

Only show results where is faster than
Only show results matching title/arguments (delimit multiple options with a comma):
Do not show results matching title/arguments (delimit multiple options with a comma):


{ "title": "stock-glibc", "last_modified": "2018-04-07 19:51:20", "description": "Ubuntu 18.04 with stock glibc", "systems": { "stock-glibc": { "identifier": "stock-glibc", "hardware": { "Processor": "AMD Ryzen Threadripper 1950X 16-Core @ 3.40GHz (16 Cores \/ 32 Threads)", "Motherboard": "ASUS PRIME X399-A (0503 BIOS)", "Chipset": "AMD Family 17h", "Memory": "4 x 8192 MB DDR4-1667MT\/s Samsung M378A1K43CB2-CRC", "Disk": "2 x 256GB Samsung SSD 850 + 128GB SanDisk SDSSDHP1 + 128GB SAMSUNG MZNTE128 + 400GB INTEL SSDPEDMW400G4", "Graphics": "Gigabyte AMD Radeon R7 260X\/360 1024MB", "Audio": "AMD Tobago HDMI Audio", "Network": "Intel I211 Gigabit Connection" }, "software": { "OS": "Ubuntu 18.04", "Kernel": "4.14.32-zen+ (x86_64)", "Desktop": "Unity", "Compiler": "GCC 7.3.0", "File-System": "f2fs", "Screen Resolution": "1280x1024" }, "user": "root", "timestamp": "2018-04-07 18:23:37", "data": { "compiler-configuration": "--build=x86_64-linux-gnu --disable-vtable-verify --disable-werror --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-gnu-unique-object --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --enable-libmpx --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-multiarch --enable-multilib --enable-nls --enable-objc-gc=auto --enable-offload-targets=nvptx-none --enable-plugin --enable-shared --enable-threads=posix --host=x86_64-linux-gnu --program-prefix=x86_64-linux-gnu- --target=x86_64-linux-gnu --with-abi=m64 --with-arch-32=i686 --with-default-libstdcxx-abi=new --with-gcc-major-version-only --with-multilib-list=m32,m64,mx32 --with-target-system-zlib --with-tune=generic --without-cuda-driver -v", "disk-scheduler": "NONE", "cpu-scaling-governor": "acpi-cpufreq performance", "python": "Python 2.7.14+ + Python 3.6.5", "security": "__user pointer sanitization Protection" } }, "tuned-glibc": { "identifier": "tuned-glibc", "hardware": { "Processor": "AMD Ryzen Threadripper 1950X 16-Core @ 3.40GHz (16 Cores \/ 32 Threads)", "Motherboard": "ASUS PRIME X399-A (0503 BIOS)", "Chipset": "AMD Family 17h", "Memory": "4 x 8192 MB DDR4-1667MT\/s Samsung M378A1K43CB2-CRC", "Disk": "2 x 256GB Samsung SSD 850 + 128GB SanDisk SDSSDHP1 + 128GB SAMSUNG MZNTE128 + 400GB INTEL SSDPEDMW400G4", "Graphics": "Gigabyte AMD Radeon R7 260X\/360 1024MB", "Audio": "AMD Tobago HDMI Audio", "Network": "Intel I211 Gigabit Connection" }, "software": { "OS": "Ubuntu 18.04", "Kernel": "4.14.32-zen+ (x86_64)", "Desktop": "Unity", "Compiler": "GCC 7.3.0", "File-System": "f2fs", "Screen Resolution": "1280x1024" }, "user": "root", "timestamp": "2018-04-07 19:14:25", "data": { "compiler-configuration": "--build=x86_64-linux-gnu --disable-vtable-verify --disable-werror --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-gnu-unique-object --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --enable-libmpx --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-multiarch --enable-multilib --enable-nls --enable-objc-gc=auto --enable-offload-targets=nvptx-none --enable-plugin --enable-shared --enable-threads=posix --host=x86_64-linux-gnu --program-prefix=x86_64-linux-gnu- --target=x86_64-linux-gnu --with-abi=m64 --with-arch-32=i686 --with-default-libstdcxx-abi=new --with-gcc-major-version-only --with-multilib-list=m32,m64,mx32 --with-target-system-zlib --with-tune=generic --without-cuda-driver -v", "disk-scheduler": "NONE", "cpu-scaling-governor": "acpi-cpufreq performance", "python": "Python 2.7.14+ + Python 3.6.5", "security": "__user pointer sanitization Protection" } }, "tuned-glibc-jemalloc": { "identifier": "tuned-glibc-jemalloc", "hardware": { "Processor": "AMD Ryzen Threadripper 1950X 16-Core @ 3.40GHz (16 Cores \/ 32 Threads)", "Motherboard": "ASUS PRIME X399-A (0503 BIOS)", "Chipset": "AMD Family 17h", "Memory": "4 x 8192 MB DDR4-1667MT\/s Samsung M378A1K43CB2-CRC", "Disk": "2 x 256GB Samsung SSD 850 + 128GB SanDisk SDSSDHP1 + 128GB SAMSUNG MZNTE128 + 400GB INTEL SSDPEDMW400G4", "Graphics": "Gigabyte AMD Radeon R7 260X\/360 1024MB", "Audio": "AMD Tobago HDMI Audio", "Network": "Intel I211 Gigabit Connection" }, "software": { "OS": "Ubuntu 18.04", "Kernel": "4.14.32-zen+ (x86_64)", "Desktop": "Unity", "Compiler": "GCC 7.3.0", "File-System": "f2fs", "Screen Resolution": "1280x1024" }, "user": "root", "timestamp": "2018-04-07 19:35:36", "data": { "compiler-configuration": "--build=x86_64-linux-gnu --disable-vtable-verify --disable-werror --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-gnu-unique-object --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --enable-libmpx --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-multiarch --enable-multilib --enable-nls --enable-objc-gc=auto --enable-offload-targets=nvptx-none --enable-plugin --enable-shared --enable-threads=posix --host=x86_64-linux-gnu --program-prefix=x86_64-linux-gnu- --target=x86_64-linux-gnu --with-abi=m64 --with-arch-32=i686 --with-default-libstdcxx-abi=new --with-gcc-major-version-only --with-multilib-list=m32,m64,mx32 --with-target-system-zlib --with-tune=generic --without-cuda-driver -v", "disk-scheduler": "NONE", "cpu-scaling-governor": "acpi-cpufreq performance", "python": "Python 2.7.14+ + Python 3.6.5", "security": "__user pointer sanitization Protection" } } }, "results": { "d8e528781a2d832401861507c398455c72efba22": { "identifier": "pts\/tscp-1.2.1", "title": "TSCP", "app_version": "1.81", "description": "AI Chess Performance", "scale": "Nodes Per Second", "proportion": "HIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 1077003, "raw_values": [ 1077843, 1077843, 1073641, 1077843, 1077843 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-O3 -march=native" } } }, "tuned-glibc": { "value": 1078708, "raw_values": [ 1069471, 1079956, 1079956, 1082078, 1082078 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-O3 -march=native" } } }, "tuned-glibc-jemalloc": { "value": 1081233, "raw_values": [ 1084208, 1079956, 1082078, 1082078, 1077843 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-O3 -march=native" } } } } }, "10c32bac040187058a47fcb10f3669610e9a51e3": { "identifier": "pts\/compilebench-1.0.2", "title": "Compile Bench", "app_version": "0.6", "arguments": "COMPILE", "description": "Test: Compile", "scale": "MB\/s", "proportion": "HIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 3154.8000000000001818989403545856475830078125, "raw_values": [ 3126.94000000000005456968210637569427490234375, 3140.5500000000001818989403545856475830078125, 3196.920000000000072759576141834259033203125 ] }, "tuned-glibc": { "value": 3180.03000000000020008883439004421234130859375, "raw_values": [ 3201.15000000000009094947017729282379150390625, 3139.26999999999998181010596454143524169921875, 3199.670000000000072759576141834259033203125 ] }, "tuned-glibc-jemalloc": { "value": 3200.59000000000014551915228366851806640625, "raw_values": [ 3201.15000000000009094947017729282379150390625, 3230.61000000000012732925824820995330810546875, 3170.01999999999998181010596454143524169921875 ] } } }, "6538b9dddd169903ef80d992acbc43d31e944527": { "identifier": "pts\/compilebench-1.0.2", "title": "Compile Bench", "app_version": "0.6", "arguments": "INITIAL_CREATE", "description": "Test: Initial Create", "scale": "MB\/s", "proportion": "HIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 487.1299999999999954525264911353588104248046875, "raw_values": [ 377.70999999999997953636921010911464691162109375, 544.1100000000000136424205265939235687255859375, 539.55999999999994543031789362430572509765625 ] }, "tuned-glibc": { "value": 534.98000000000001818989403545856475830078125, "raw_values": [ 539.990000000000009094947017729282379150390625, 534.48000000000001818989403545856475830078125, 530.4600000000000363797880709171295166015625 ] }, "tuned-glibc-jemalloc": { "value": 555.5, "raw_values": [ 557.8500000000000227373675443232059478759765625, 557.48000000000001818989403545856475830078125, 551.1599999999999681676854379475116729736328125 ] } } }, "a09e316a3033622e3536e1a09ddfea6f05b4226b": { "identifier": "pts\/compilebench-1.0.2", "title": "Compile Bench", "app_version": "0.6", "arguments": "READ_COMPILED_TREE", "description": "Test: Read Compiled Tree", "scale": "MB\/s", "proportion": "HIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 1289.529999999999972715158946812152862548828125, "raw_values": [ 1277.7100000000000363797880709171295166015625, 1277.029999999999972715158946812152862548828125, 1313.859999999999899955582804977893829345703125 ] }, "tuned-glibc": { "value": 1282.529999999999972715158946812152862548828125, "raw_values": [ 1318.549999999999954525264911353588104248046875, 1267.65000000000009094947017729282379150390625, 1261.40000000000009094947017729282379150390625 ] }, "tuned-glibc-jemalloc": { "value": 1101.589999999999918145476840436458587646484375, "raw_values": [ 1109.950000000000045474735088646411895751953125, 1110.160000000000081854523159563541412353515625, 1084.660000000000081854523159563541412353515625 ] } } }, "c128cdc33763eb87b95c4109370a88babaaba65e": { "identifier": "pts\/tjbench-1.0.2", "title": "libjpeg-turbo tjbench", "app_version": "1.5.3", "arguments": "decompression-throughput", "description": "Test: Decompression Throughput", "scale": "Megapixels\/sec", "proportion": "HIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 170.81999999999999317878973670303821563720703125, "raw_values": [ 170.73831400000000257932697422802448272705078125, 170.62159600000001091757440008223056793212890625, 171.1075309999999944921000860631465911865234375 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-O3 -lm" } } }, "tuned-glibc": { "value": 171.210000000000007958078640513122081756591796875, "raw_values": [ 171.174047999999999092324287630617618560791015625, 171.42280199999999013016349636018276214599609375, 171.044639999999986912371241487562656402587890625 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-O3 -lm" } } }, "tuned-glibc-jemalloc": { "value": 171.1100000000000136424205265939235687255859375, "raw_values": [ 170.12482399999998960993252694606781005859375, 171.6323830000000043582986108958721160888671875, 171.577449999999998908606357872486114501953125 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-O3 -lm" } } } } }, "55498d561e9a5974c370653eb586e976030b1aff": { "identifier": "pts\/hmmer-1.1.2", "title": "Timed HMMer Search", "app_version": "2.3.2", "description": "Pfam Database Search", "scale": "Seconds", "proportion": "LIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 5.4900000000000002131628207280300557613372802734375, "raw_values": [ 5.56580591201780006116450749686919152736663818359375, 5.56600499153139960384351070388220250606536865234375, 5.34303498268130017123667130363173782825469970703125 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-O2 -pthread -lhmmer -lsquid -lm" } } }, "tuned-glibc": { "value": 5.20000000000000017763568394002504646778106689453125, "raw_values": [ 5.27747821807859995857370449812151491641998291015625, 5.13976693153380015388620449812151491641998291015625, 5.1726939678191996563327847979962825775146484375 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-O2 -pthread -lhmmer -lsquid -lm" } } }, "tuned-glibc-jemalloc": { "value": 5.269999999999999573674358543939888477325439453125, "raw_values": [ 5.385807991027800056826890795491635799407958984375, 5.21772408485410021938832869636826217174530029296875, 5.2170870304108003523424486047588288784027099609375 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-O2 -pthread -lhmmer -lsquid -lm" } } } } }, "ffba90bc6e56b93d1e0102003a1dd9e41a8e227c": { "identifier": "pts\/compress-7zip-1.7.0", "title": "7-Zip Compression", "app_version": "16.02", "description": "Compress Speed Test", "scale": "MIPS", "proportion": "HIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 66552, "raw_values": [ 66712, 66214, 66730 ], "details": { "compiler-options": { "compiler-type": "CXX", "compiler": "g++", "compiler-options": "-pipe -lpthread" } } }, "tuned-glibc": { "value": 70380, "raw_values": [ 71086, 70698, 69356 ], "details": { "compiler-options": { "compiler-type": "CXX", "compiler": "g++", "compiler-options": "-pipe -lpthread" } } }, "tuned-glibc-jemalloc": { "value": 66787, "raw_values": [ 67964, 66045, 66351 ], "details": { "compiler-options": { "compiler-type": "CXX", "compiler": "g++", "compiler-options": "-pipe -lpthread" } } } } }, "f7aa4534b39b4fc05f707b1bdc0801d9a3a4ab5f": { "identifier": "pts\/build-linux-kernel-1.8.0", "title": "Timed Linux Kernel Compilation", "app_version": "4.13", "description": "Time To Compile", "scale": "Seconds", "proportion": "LIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 48.1700000000000017053025658242404460906982421875, "raw_values": [ 49.52429795265199885534457280300557613372802734375, 47.576851129532002460109652020037174224853515625, 47.4140808582310029350992408581078052520751953125 ] }, "tuned-glibc": { "value": 48.24000000000000198951966012828052043914794921875, "raw_values": [ 49.81828188896199804958087042905390262603759765625, 47.51415991783100167822340154089033603668212890625, 47.4014129638670027588887023739516735076904296875 ] }, "tuned-glibc-jemalloc": { "value": 48.57000000000000028421709430404007434844970703125, "raw_values": [ 50.3624870777129984844577847979962825775146484375, 47.873946189880001611527404747903347015380859375, 47.475925922393997780091012828052043914794921875 ] } } }, "df04c74f45043edbffc448ab1bab90caabb093af": { "identifier": "pts\/x264-2.3.1", "title": "x264", "app_version": "2018-02-05", "description": "H.264 Video Encoding", "scale": "Frames Per Second", "proportion": "HIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 127.219999999999998863131622783839702606201171875, "raw_values": [ 122.849999999999994315658113919198513031005859375, 130.43000000000000682121026329696178436279296875, 128.3700000000000045474735088646411895751953125 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-ldl -m64 -lm -lpthread -O3 -ffast-math -std=gnu99 -fPIC -fomit-frame-pointer -fno-tree-vectorize" } } }, "tuned-glibc": { "value": 126.719999999999998863131622783839702606201171875, "raw_values": [ 121.9200000000000017053025658242404460906982421875, 129.530000000000001136868377216160297393798828125, 128.719999999999998863131622783839702606201171875 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-ldl -m64 -lm -lpthread -O3 -ffast-math -std=gnu99 -fPIC -fomit-frame-pointer -fno-tree-vectorize" } } }, "tuned-glibc-jemalloc": { "value": 127.6099999999999994315658113919198513031005859375, "raw_values": [ 123.4200000000000017053025658242404460906982421875, 130.06999999999999317878973670303821563720703125, 129.349999999999994315658113919198513031005859375 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-ldl -m64 -lm -lpthread -O3 -ffast-math -std=gnu99 -fPIC -fomit-frame-pointer -fno-tree-vectorize" } } } } }, "90c619324fe40626154ebb0a68445c6eb32752e9": { "identifier": "pts\/c-ray-1.1.1", "title": "C-Ray", "app_version": "1.1", "description": "Total Time", "scale": "Seconds", "proportion": "LIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 5.32000000000000028421709430404007434844970703125, "raw_values": [ 5.349000000000000198951966012828052043914794921875, 5.29999999999999982236431605997495353221893310546875, 5.29900000000000037658764995285309851169586181640625 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-lm -lpthread -O3" } } }, "tuned-glibc": { "value": 5.269999999999999573674358543939888477325439453125, "raw_values": [ 5.26799999999999979394260662957094609737396240234375, 5.27400000000000002131628207280300557613372802734375, 5.2539999999999995594635038287378847599029541015625 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-lm -lpthread -O3" } } }, "tuned-glibc-jemalloc": { "value": 5.2599999999999997868371792719699442386627197265625, "raw_values": [ 5.26499999999999968025576890795491635799407958984375, 5.2660000000000000142108547152020037174224853515625, 5.24800000000000022026824808563105762004852294921875 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-lm -lpthread -O3" } } } } }, "e29831e8d73cbbcd51c1f87bfaa788aa77e01bc2": { "identifier": "pts\/ffmpeg-2.7.1", "title": "FFmpeg", "app_version": "3.4.1", "description": "H.264 HD To NTSC DV", "scale": "Seconds", "proportion": "LIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 6.2599999999999997868371792719699442386627197265625, "raw_values": [ 6.25619196891779960623125589336268603801727294921875, 6.38641381263729979167464989586733281612396240234375, 6.137109041213999915953536401502788066864013671875 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-lavdevice -lavfilter -lavformat -lavcodec -lswresample -lswscale -lavutil -lm -ldl -pthread -std=c11 -fomit-frame-pointer -fPIC -O3 -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -MMD -MF -MT" } } }, "tuned-glibc": { "value": 6.17999999999999971578290569595992565155029296875, "raw_values": [ 6.22046589851380016256143790087662637233734130859375, 6.22545790672300025647700749686919152736663818359375, 6.09949183464050026515224089962430298328399658203125 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-lavdevice -lavfilter -lavformat -lavcodec -lswresample -lswscale -lavutil -lm -ldl -pthread -std=c11 -fomit-frame-pointer -fPIC -O3 -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -MMD -MF -MT" } } }, "tuned-glibc-jemalloc": { "value": 6.0999999999999996447286321199499070644378662109375, "raw_values": [ 6.212085962295500252139390795491635799407958984375, 6.01959109306339978928690470638684928417205810546875, 6.05406093597409977746792719699442386627197265625 ], "details": { "compiler-options": { "compiler-type": "CC", "compiler": "gcc", "compiler-options": "-lavdevice -lavfilter -lavformat -lavcodec -lswresample -lswscale -lavutil -lm -ldl -pthread -std=c11 -fomit-frame-pointer -fPIC -O3 -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -MMD -MF -MT" } } } } }, "946f5e0360cf178c425ab9080de3597a148b632b": { "identifier": "pts\/phpbench-1.1.5", "title": "PHPBench", "app_version": "0.8.1", "description": "PHP Benchmark Suite", "scale": "Score", "proportion": "HIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 486468, "raw_values": [ 483585, 491072, 484748 ] }, "tuned-glibc": { "value": 489592, "raw_values": [ 487802, 490589, 490384 ] }, "tuned-glibc-jemalloc": { "value": 485577, "raw_values": [ 490172, 486256, 480302 ] } } }, "fa95c59f61f38f7b8191e913fa323e51b9368538": { "identifier": "pts\/pybench-1.1.2", "title": "PyBench", "app_version": "2018-02-16", "description": "Total For Average Test Times", "scale": "Milliseconds", "proportion": "LIB", "display_format": "BAR_GRAPH", "results": { "stock-glibc": { "value": 1674, "raw_values": [ 1681, 1659, 1681 ] }, "tuned-glibc": { "value": 1682, "raw_values": [ 1661, 1694, 1692 ] }, "tuned-glibc-jemalloc": { "value": 1672, "raw_values": [ 1681, 1658, 1676 ] } } } } }