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

Reduce string allocations in Seahorse::Util.underscore. #1543

Merged
merged 1 commit into from
Jun 28, 2017

Conversation

tgxworld
Copy link

Profiling script

require 'aws-sdk'
require 'memory_profiler'

MemoryProfiler.report do
  Aws::S3
end.pretty_print

Before:

Total allocated: 12037984 bytes (134157 objects)
Total retained:  1823217 bytes (19143 objects)

allocated memory by gem
-----------------------------------
   5607016  aws-sdk-core-2.9.43
   4182950  rubygems
   1078153  2.4.1/lib
    995943  aws-sdk-resources-2.9.43
    172234  oj-3.1.4
      1688  2.4.0

allocated memory by file
-----------------------------------
   3895019  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb
   1838731  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/seahorse/util.rb
   1321647  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/aws-sdk-core/json.rb
   1200598  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/aws-sdk-core/api/shape_map.rb
    842413  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/seahorse/model/shapes.rb

After:

Total allocated: 11210399 bytes (119690 objects)
Total retained:  1823257 bytes (19144 objects)

allocated memory by gem
-----------------------------------
   4779351  aws-sdk-core-2.9.43
   4183030  rubygems
   1078153  2.4.1/lib
    995943  aws-sdk-resources-2.9.43
    172234  oj-3.1.4
      1688  2.4.0

allocated memory by file
-----------------------------------
   3895099  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb
   1321647  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/aws-sdk-core/json.rb
   1203579  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/aws-sdk-core/api/shape_map.rb
   1006020  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/seahorse/util.rb

Profiling script

```
require 'aws-sdk'
require 'memory_profiler'

MemoryProfiler.report do
  Aws::S3
end.pretty_print
```

Before:

```
Total allocated: 12037984 bytes (134157 objects)
Total retained:  1823217 bytes (19143 objects)

allocated memory by gem
-----------------------------------
   5607016  aws-sdk-core-2.9.43
   4182950  rubygems
   1078153  2.4.1/lib
    995943  aws-sdk-resources-2.9.43
    172234  oj-3.1.4
      1688  2.4.0

allocated memory by file
-----------------------------------
   3895019  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb
   1838731  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/seahorse/util.rb
   1321647  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/aws-sdk-core/json.rb
   1200598  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/aws-sdk-core/api/shape_map.rb
    842413  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/seahorse/model/shapes.rb
```

After:

```
Total allocated: 11751031 bytes (127005 objects)
Total retained:  1823217 bytes (19143 objects)

allocated memory by gem
-----------------------------------
   5320063  aws-sdk-core-2.9.43
   4182950  rubygems
   1078153  2.4.1/lib
    995943  aws-sdk-resources-2.9.43
    172234  oj-3.1.4
      1688  2.4.0

allocated memory by file
-----------------------------------
   3895019  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb
   1538292  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/seahorse/util.rb
   1321647  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/aws-sdk-core/json.rb
   1209779  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/aws-sdk-core/api/shape_map.rb
    842413  /home/tgxworld/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/aws-sdk-core-2.9.43/lib/seahorse/model/shapes.rb
```
@tgxworld tgxworld force-pushed the reduce_allocations branch from 684a82c to 028d376 Compare June 21, 2017 02:12
@cjyclaire cjyclaire merged commit 344db1f into aws:master Jun 28, 2017
@cjyclaire
Copy link
Contributor

@tgxworld Thanks for the contribution and benchmarking details! looks good to me, I'll merge this.

@tgxworld tgxworld deleted the reduce_allocations branch June 28, 2017 21:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants