File tree Expand file tree Collapse file tree 4 files changed +42
-17
lines changed 
main/java/com/trivago/fastutilconcurrentwrapper/io 
test/java/com/trivago/fastutilconcurrentwrapper/io Expand file tree Collapse file tree 4 files changed +42
-17
lines changed Original file line number Diff line number Diff line change @@ -160,18 +160,24 @@ public boolean readBoolean () {
160160	/// @see DataInputStream#readShort 
161161	/// (short)((read() << 8)|(read() & 0xFF)) 
162162	@ Override 
163- 	public  short  readShort () {
164- 		return  (short )((read () << 8 )|(read () & 0xFF ));
163+ 	public  short  readShort  () {
164+ 		short  v  = JBytes .DirectByteArrayAccess .getShort (buf , pos );
165+ 		pos  += 2 ;
166+ 		return  v ;
165167	}
166168
167169	@ Override 
168170	public  int  readUnsignedShort () {
169- 		return  ((read () & 0xFF ) << 8 )|(read () & 0xFF );
171+ 		int  v  = JBytes .DirectByteArrayAccess .getUnsignedShort (buf , pos );
172+ 		pos  += 2 ;
173+ 		return  v ;
170174	}
171175
172176	@ Override 
173177	public  char  readChar () {
174- 		return  (char )(((read () & 0xFF ) << 8 )|(read () & 0xFF ));
178+ 		char  v  = JBytes .DirectByteArrayAccess .getChar (buf , pos );
179+ 		pos  += 2 ;
180+ 		return  v ;
175181	}
176182
177183	@ Override 
@@ -205,12 +211,16 @@ public long readLong () {
205211
206212	@ Override 
207213	public  float  readFloat  () {
208- 		return  Float .intBitsToFloat (readInt ());
214+ 		float  v  = JBytes .DirectByteArrayAccess .getFloat (buf , pos );
215+ 		pos  += 4 ;
216+ 		return  v ;
209217	}
210218
211219	@ Override 
212220	public  double  readDouble  () {
213- 		return  Double .longBitsToDouble (readLong ());
221+ 		double  v  = JBytes .DirectByteArrayAccess .getDouble (buf , pos );
222+ 		pos  += 8 ;
223+ 		return  v ;
214224	}
215225
216226	@ Override   @ Deprecated 
Original file line number Diff line number Diff line change @@ -194,15 +194,19 @@ public void writeByte(int v) {
194194	}
195195
196196	@ Override 
197- 	public  void  writeShort (int  v ) {
198- 		write (v  >> 8 );
199- 		write (v );
197+ 	public  void  writeShort  (int  v ) {
198+ 		grow (2 );
199+ 		JBytes .DirectByteArrayAccess .setShort (buf , position , (short ) v );
200+ 		position  += 2 ;
201+ 		if  (count  < position ) count  = position ;
200202	}
201203
202204	@ Override 
203- 	public  void  writeChar (int  v ) {
204- 		write (v  >> 8 );
205- 		write (v );
205+ 	public  void  writeChar  (int  v ) {
206+ 		grow (2 );
207+ 		JBytes .DirectByteArrayAccess .setChar (buf , position , (char ) v );
208+ 		position  += 2 ;
209+ 		if  (count  < position ) count  = position ;
206210	}
207211
208212	@ Override 
@@ -234,12 +238,18 @@ public void writeLong (long v) {
234238
235239	@ Override 
236240	public  void  writeFloat (float  v ) {
237- 		writeInt (Float .floatToIntBits (v ));
241+ 		grow (4 );
242+ 		JBytes .DirectByteArrayAccess .setFloat (buf , position , v );
243+ 		position  += 4 ;
244+ 		if  (count  < position ) count  = position ;
238245	}
239246
240247	@ Override 
241248	public  void  writeDouble (double  v ) {
242- 		writeLong (Double .doubleToLongBits (v ));
249+ 		grow (8 );
250+ 		JBytes .DirectByteArrayAccess .setDouble (buf , position , v );
251+ 		position  += 8 ;
252+ 		if  (count  < position ) count  = position ;
243253	}
244254
245255	/** 
Original file line number Diff line number Diff line change @@ -998,6 +998,8 @@ void _oos () throws IOException, ClassNotFoundException {
998998	}
999999
10001000	/// 500k: 5_760 ms, op/s=86_802 
1001+ 	/// VarHandle int&long: 2_333 ms, op/s=214_281 
1002+ 	/// all: 2_281, op/s=219_195 
10011003	@ Test 
10021004	void  _benchmark  () {
10031005		IntStream .range (0 , 2 ).forEach (__ ->{
Original file line number Diff line number Diff line change @@ -154,9 +154,12 @@ void testEOF () throws UTFDataFormatException {
154154		assertEquals (-1 , r .readByte ());
155155		assertEquals (0xff , r .readUnsignedByte ());
156156		assertTrue (r .readBoolean ());//? 
157- 		assertEquals (-1 , r .readShort ());
158- 		assertEquals (0xFFFF , r .readUnsignedShort ());
159- 		assertEquals (0xFFFF , r .readChar ());
157+ 		//assertEquals(-1, r.readShort()); 
158+ 		assertThrows (ArrayIndexOutOfBoundsException .class , r ::readShort );
159+ 		//assertEquals(0xFFFF, r.readUnsignedShort()); 
160+ 		assertThrows (ArrayIndexOutOfBoundsException .class , r ::readUnsignedShort );
161+ 		//assertEquals(0xFFFF, r.readChar()); 
162+ 		assertThrows (ArrayIndexOutOfBoundsException .class , r ::readChar );
160163		//assertEquals(-1, r.readInt()); 
161164		assertThrows (ArrayIndexOutOfBoundsException .class , r ::readInt );
162165		//assertEquals(-1, r.readLong()); 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments