Browse Source

[c#/beetlex] change plaintext buffer size, optimize fortunes. (#6300)

* update beetlex 1.4.3

update beetlex 1.4.3

* docker add COMPlus_ReadyToRun variable
update beetlex

* update beetlex, enabled thread queue

* beetlex framework add db and queries cases

* add db code

* change result json data

* update query url

* beetlex framework add fortunes cases

* change Content-Type

* add beetlex core cases

* fix queries cases

* update config

* change try readline

* update benchmark config

* Update README.md

* Update README.md

* change versus property

* beetlex-core update .net core to v3.0

* change beetlex-core project file

* beetlex update raw db class

* beetlex update raw db

* beetlex debug plaintext

* change debug docker file

* update beetlex to 1.4.0

* update

* beetlex update core 3.1

* [c#/beetlex] add updates cases

* [c#/beetlex] change Server: TFB, change custom connection pool, add update docker

* fix errors

* change pool init

* change connection pool maxsize

* fix fortunes errors

* clear DBRaw _connectionString value.

* [c#beetlex] change update dbconnection pool size

* [c#/beetlex] udpate spanjson to v3.0.1, Npgsql v5.0.0

* [c#/beetlex] add caching sample

* set connectionstring multiplexing

* remove connection multiplexing setting

* [c#/beetlex]change NpgsqlParameter to  NpgsqlParameter<T>

* [c#/beetlex] update dbraw

* [c#/beetlex] change connection string

* [c#/beetlex]  add fortunes cases to core-updb

* update beetlex 1.5.6

* update 5.0.0-alpha1

* update docker file

* Enabled IOQueues

* Set IOQueues debug mode

* update

* [c#/beetlex] udpate to v1.6.0.1-beta

* update pg drive

* [c#/beetlex] update to beetlex v1.6.3 and support pipelining

* set options

* [c#/beetlex] Optimized actions

* [c#/beetlex] update plaintext

* Bump ServiceStack in /frameworks/CSharp/servicestack/src/SelfHost

Bumps [ServiceStack](https://github.com/ServiceStack/ServiceStack) from 3.9.59 to 5.9.2.
- [Release notes](https://github.com/ServiceStack/ServiceStack/releases)
- [Commits](https://github.com/ServiceStack/ServiceStack/commits/v5.9.2)

Signed-off-by: dependabot[bot] <[email protected]>

* [c#/beetlex] change plaintext buffer size, optimize fortunes.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Henry 4 years ago
parent
commit
5ffa0ddadd

+ 8 - 1
frameworks/CSharp/beetlex/PlatformBenchmarks/HttpServer.cs

@@ -20,9 +20,16 @@ namespace PlatformBenchmarks
             serverOptions.LogLevel = LogType.Error;
             serverOptions.DefaultListen.Port = 8080;
             serverOptions.Statistical = false;
-            serverOptions.BufferSize = 1024 * 8;
             serverOptions.BufferPoolMaxMemory = 1000;
             serverOptions.BufferPoolSize = 1024 * 10;
+            if (Program.Debug)
+            {
+                serverOptions.BufferSize = 1024 * 16;
+            }
+            else
+            {
+                serverOptions.BufferSize = 1024 * 8;
+            }
             ApiServer = SocketFactory.CreateTcpServer<HttpHandler>(serverOptions);
             ApiServer.Open();
             if (!Program.UpDB)

+ 20 - 1
frameworks/CSharp/beetlex/PlatformBenchmarks/fortunes.cs

@@ -4,6 +4,8 @@ using System;
 using System.Collections.Generic;
 using System.Globalization;
 using System.Text;
+using System.Text.Encodings.Web;
+using System.Text.Unicode;
 using System.Threading.Tasks;
 
 namespace PlatformBenchmarks
@@ -17,10 +19,23 @@ namespace PlatformBenchmarks
         private readonly static AsciiString _fortunesRowEnd = "</td></tr>";
         private readonly static AsciiString _fortunesTableEnd = "</table></body></html>";
 
+        [ThreadStatic]
+        private static char[] mHtmlEncodeBuffer;
+
+        protected HtmlEncoder HtmlEncoder { get; } = CreateHtmlEncoder();
+
+        private static HtmlEncoder CreateHtmlEncoder()
+        {
+            var settings = new TextEncoderSettings(UnicodeRanges.BasicLatin, UnicodeRanges.Katakana, UnicodeRanges.Hiragana);
+            settings.AllowCharacter('\u2014');  // allow EM DASH through
+            return HtmlEncoder.Create(settings);
+        }
+
         public async Task fortunes(PipeStream stream, HttpToken token, ISession session)
         {
             try
             {
+              
                 var data = await token.Db.LoadFortunesRows();
                 stream.Write(_fortunesTableStart.Data, 0, _fortunesTableStart.Length);
                 foreach (var item in data)
@@ -28,7 +43,11 @@ namespace PlatformBenchmarks
                     stream.Write(_fortunesRowStart.Data, 0, _fortunesRowStart.Length);
                     stream.Write(item.Id.ToString(CultureInfo.InvariantCulture));
                     stream.Write(_fortunesColumn.Data, 0, _fortunesColumn.Length);
-                    stream.Write(System.Web.HttpUtility.HtmlEncode(item.Message));
+                    if (mHtmlEncodeBuffer == null)
+                        mHtmlEncodeBuffer = new char[1024];
+                    HtmlEncoder.Encode(item.Message, mHtmlEncodeBuffer, out int consumed, out int writtens);
+                    //stream.Write(HtmlEncoder.Encode(item.Message));
+                    stream.Write(new ArraySegment<char>(mHtmlEncodeBuffer, 0, writtens));
                     stream.Write(_fortunesRowEnd.Data, 0, _fortunesRowEnd.Length);
                 }
                 stream.Write(_fortunesTableEnd.Data, 0, _fortunesTableEnd.Length);

+ 1 - 1
frameworks/CSharp/servicestack/src/SelfHost/packages.config

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
-  <package id="ServiceStack" version="3.9.59" targetFramework="net45" />
+  <package id="ServiceStack" version="5.9.2" targetFramework="net45" />
   <package id="ServiceStack.Common" version="3.9.59" targetFramework="net45" />
   <package id="ServiceStack.OrmLite.SqlServer" version="3.9.59" targetFramework="net45" />
   <package id="ServiceStack.Redis" version="3.9.59" targetFramework="net45" />