@@ -12,6 +12,10 @@ namespace ManagedRIOHttpServer
12
12
{
13
13
public sealed class Program
14
14
{
15
+ // Number of 100ns ticks per time unit
16
+ private const long TicksPerMillisecond = 10000 ;
17
+ private const long TicksPerSecond = TicksPerMillisecond * 1000 ;
18
+
15
19
static readonly string headersKeepAliveStr = "HTTP/1.1 200 OK\r \n " +
16
20
"Content-Type: text/plain\r \n " +
17
21
"Content-Length:13\r \n " +
@@ -106,6 +110,7 @@ static async Task ServeSocket(RIOTcpConnection socket)
106
110
107
111
var loop = 0 ;
108
112
var overflow = 0 ;
113
+ var lastSeconds = 0L ;
109
114
// need to check for keep alive
110
115
111
116
while ( true )
@@ -272,10 +277,15 @@ static async Task ServeSocket(RIOTcpConnection socket)
272
277
socket . SendCachedBad ( ) ;
273
278
break ;
274
279
}
275
-
276
- var date = DateTime . UtcNow . ToString ( "r" ) ;
277
- Encoding . UTF8 . GetBytes ( date , 0 , dateBytes . Length , dateBytes , 0 ) ;
278
-
280
+
281
+ var now = DateTime . UtcNow ;
282
+ var ticks = now . Ticks / TicksPerSecond ;
283
+ if ( lastSeconds != ticks ) {
284
+ lastSeconds = ticks ;
285
+ var date = now . ToString ( "r" ) ;
286
+ Encoding . ASCII . GetBytes ( date , 0 , dateBytes . Length , dateBytes , 0 ) ;
287
+ }
288
+
279
289
for ( var i = 1 ; i < count ; i ++ )
280
290
{
281
291
socket . QueueSend ( headerBuffer , false ) ;
@@ -301,27 +311,30 @@ static async Task ServeSocket(RIOTcpConnection socket)
301
311
}
302
312
}
303
313
304
-
305
- public static void LowerCaseSIMD ( byte [ ] data )
306
- {
307
- var A = new Vector < byte > ( 65 ) ; // A
308
- var Z = new Vector < byte > ( 90 ) ; // Z
314
+ //public static void LowerCaseSIMD(ArraySegment<byte> data)
315
+ //{
316
+ // if (data.Offset + data.Count + Vector<byte>.Count < data.Array.Length)
317
+ // {
318
+ // throw new ArgumentOutOfRangeException("Nope");
319
+ // }
320
+ // var A = new Vector<byte>(65); // A
321
+ // var Z = new Vector<byte>(90); // Z
309
322
310
- for ( var o = 0 ; o < data . Length - Vector < byte > . Count ; o += Vector < byte > . Count )
311
- {
312
- var v = new Vector < byte > ( data , o ) ;
313
-
314
- v = Vector . ConditionalSelect (
315
- Vector . BitwiseAnd (
316
- Vector . GreaterThanOrEqual ( v , A ) ,
317
- Vector . LessThanOrEqual ( v , Z )
318
- ) ,
319
- Vector . BitwiseOr ( new Vector < byte > ( 0x20 ) , v ) , // 0010 0000
320
- v
321
- ) ;
322
- v . CopyTo ( data , o ) ;
323
- }
324
- }
323
+ // for (var o = data.Offset ; o < data.Count - Vector<byte>.Count; o += Vector<byte>.Count)
324
+ // {
325
+ // var v = new Vector<byte>(data.Array , o);
326
+
327
+ // v = Vector.ConditionalSelect(
328
+ // Vector.BitwiseAnd(
329
+ // Vector.GreaterThanOrEqual(v, A),
330
+ // Vector.LessThanOrEqual(v, Z)
331
+ // ),
332
+ // Vector.BitwiseOr(new Vector<byte>(0x20), v), // 0010 0000
333
+ // v
334
+ // );
335
+ // v.CopyTo(data.Array , o);
336
+ // }
337
+ // }
325
338
}
326
339
327
340
}
0 commit comments