-
Notifications
You must be signed in to change notification settings - Fork 16
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
Creating Bytes from JSONValue with a Pointer #2
base: main
Are you sure you want to change the base?
Conversation
Codecov Report
@@ Coverage Diff @@
## master #2 +/- ##
==========================================
+ Coverage 70.16% 71.37% +1.21%
==========================================
Files 22 23 +1
Lines 1790 2264 +474
==========================================
+ Hits 1256 1616 +360
- Misses 534 648 +114
Continue to review full report at Codecov.
|
ea7aa98
to
a48acbe
Compare
self.write(byte: UInt8(ascii: "e")) | ||
|
||
case .bool(false): | ||
self.write(byte: UInt8(ascii: "f")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These should be in bulk
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The implementation I use currently looks like this? Do you think this would be faster in this case?
case .bool(true):
bytes.append(contentsOf: [
UInt8(ascii: "t"), UInt8(ascii: "r"), UInt8(ascii: "u"), UInt8(ascii: "e")
])
} | ||
self.write(byte: UInt8(ascii: "\"")) | ||
case .number(let string): | ||
string.utf8.withContiguousStorageIfAvailable { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What if contiguous storage isn't available?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was just a proof of concept, if I can make it faster with a pointer. So far I can't which is why I don't support nsstring for now. ;)
} | ||
case .array(let array): | ||
var iterator = array.makeIterator() | ||
self.write(byte: UInt8(ascii: "[")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Iterators copy values more often than needed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Am I correct in assuming that you would vote for direct array access? for elem in array?
@Joannis thanks for your guidance. |
This is an idea on improving the encoding speed. Doesn't seem to work though.