Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize WriteString method for primitive objects #367

Merged
merged 1 commit into from
Mar 11, 2019
Merged

Optimize WriteString method for primitive objects #367

merged 1 commit into from
Mar 11, 2019

Conversation

adrg
Copy link
Collaborator

@adrg adrg commented Mar 11, 2019

Replace fmt.Sprintf with strings.Builder and strconv conversions.
Resolves #348

Benchmarks (ran on development computer):

Before

BenchmarkPdfObjectIntegerWriteString-8      	10000000	       106 ns/op
BenchmarkPdfObjectFloatWriteString-8        	 5000000	       257 ns/op
BenchmarkPdfObjectStringWriteString-8       	   10000	    113057 ns/op
BenchmarkPdfObjectNameWriteString-8         	  500000	      3190 ns/op
BenchmarkPdfObjectArrayWriteString-8        	      20	 100750574 ns/op
BenchmarkPdfObjectDictionaryWriteString-8   	     200	   6185730 ns/op
BenchmarkPdfObjectReferenceWriteString-8    	10000000	       162 ns/op
BenchmarkPdfIndirectObjectWriteString-8     	10000000	       109 ns/op
BenchmarkPdfObjectStreamWriteString-8       	10000000	       110 ns/op
BenchmarkPdfObjectStreamsWriteString-8      	20000000	       114 ns/op

After

BenchmarkPdfObjectIntegerWriteString-8      	50000000	        31.7 ns/op
BenchmarkPdfObjectFloatWriteString-8        	20000000	        95.1 ns/op
BenchmarkPdfObjectStringWriteString-8       	   10000	      110947 ns/op
BenchmarkPdfObjectNameWriteString-8         	  500000	        3181 ns/op
BenchmarkPdfObjectArrayWriteString-8        	    3000	      435748 ns/op
BenchmarkPdfObjectDictionaryWriteString-8   	     300	     4658395 ns/op
BenchmarkPdfObjectReferenceWriteString-8    	20000000	         153 ns/op
BenchmarkPdfIndirectObjectWriteString-8     	20000000	        82.8 ns/op
BenchmarkPdfObjectStreamWriteString-8       	20000000	        84.6 ns/op
BenchmarkPdfObjectStreamsWriteString-8      	20000000	        85.2 ns/op

@gunnsth gunnsth merged commit 3eaa55e into unidoc:v3 Mar 11, 2019
@adrg adrg deleted the writestring-optimize branch March 11, 2019 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants