Drawing lines in a PDF (and also other operations) writes the coordinates to the content stream. Currently, the PDAbstractContentStream#writeOperand(float) method uses the NumberFormat class to convert the float values. This is inefficient for multiple reasons:
- NumberFormat is designed to format numbers locale dependent. That is not needed in this case
- NumberFormat uses a pattern to format the value which is also not needed in this case
- The formatting first creates a String object, converts it to a byte array with ASCII encoding and then writes it to the stream. This generates a lot of garbage.
A different approach to formatting real operands should be used.