[#85349] [Ruby trunk Bug#14334] Segmentation fault after running rspec (ruby/2.5.0/erb.rb:885 / simplecov/source_file.rb:85) — pragtob@...
Issue #14334 has been updated by PragTob (Tobias Pfeiffer).
3 messages
2018/02/02
[#85358] Re: [ruby-cvs:69220] nobu:r62039 (trunk): compile.c: unnecessary freezing — Eric Wong <normalperson@...>
nobu@ruby-lang.org wrote:
5 messages
2018/02/03
[#85612] Why require autoconf 2.67+ — leam hall <leamhall@...>
Please pardon the intrusion; I am new to Ruby and like to pull the
6 messages
2018/02/17
[#85634] [Ruby trunk Bug#14494] [PATCH] tool/m4/ruby_replace_type.m4 use AC_CHECK_TYPES for HAVE_* macros — normalperson@...
Issue #14494 has been reported by normalperson (Eric Wong).
3 messages
2018/02/19
[#85674] [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid — matz@...
Issue #13618 has been updated by matz (Yukihiro Matsumoto).
5 messages
2018/02/20
[#85686] Re: [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid
— Eric Wong <normalperson@...>
2018/02/20
matz@ruby-lang.org wrote:
[#85704] Re: [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid
— Koichi Sasada <ko1@...>
2018/02/21
On 2018/02/20 18:06, Eric Wong wrote:
[ruby-core:85318] [Ruby trunk Feature#14426][Assigned] [PATCH] openssl: reduce memory allocation in OpenSSL::Buffering#do_write
From:
hsbt@...
Date:
2018-02-01 00:05:00 UTC
List:
ruby-core #85318
Issue #14426 has been updated by hsbt (Hiroshi SHIBATA).
Status changed from Open to Assigned
Assignee set to rhenium (Kazuki Yamaguchi)
----------------------------------------
Feature #14426: [PATCH] openssl: reduce memory allocation in OpenSSL::Buffering#do_write
https://bugs.ruby-lang.org/issues/14426#change-70103
* Author: janko (Janko Marohnić)
* Status: Assigned
* Priority: Normal
* Assignee: rhenium (Kazuki Yamaguchi)
* Target version:
----------------------------------------
When writing data to an SSLSocket, there are a lot of, in my opinion, unnecessary strings being allocated, concretely in OpenSSL::Buffering#do_write.
When the buffer would be written, it would always be copied into a new string first, regardless of whether the write was partial or not. And in case of partial writes, it's not necessary to create copies of remaining data, we could just use the `String[from, length] = ""` trick immediately which modifies the string in-place.
I also thought that splitting writes on newlines was adding unnecessary memory allocations, so I removed that.
I tested uploading a 5MB file using HTTP.rb, and memory allocation went from 7.7 MB to 0.2 MB with this change.
~~~ ruby
require "http"
require "memory_profiler"
require "stringio"
body = StringIO.new("a" * 5*1024*1024)
MemoryProfiler.report do
HTTP.post("https://example.com", body: body)
end.pretty_print
~~~
---Files--------------------------------
openssl-memory-allocation.patch (913 Bytes)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>