Re: [fpc-pascal] BSON formatter

2020-05-07 Thread Ryan Joseph via fpc-pascal


> On May 7, 2020, at 9:11 PM, Michael Van Canneyt  
> wrote:
> 
> At least partial updates to a file should be there.
> Sending the whole file at essentially every few keystrokes is just 
> braindead...
> 

That's still happening but it's Sublime Texts fault for a bad API. It is fixed 
in the current development branch though (ST4). 

The problem is workspace symbols. For my project there are 40k symbols (system 
SDKs I like to browse easily) which translates to 10MB of JSON text.

It's so stupid it makes my feel ill and I weep for my CPU. I'm going to submit 
an issue to Microsoft since they at least allow this on GitHub.

>> 
>> The amount of redundant information being sent around is ridiculous. Mainly, 
>> the spec gives no way for the client to cache results and refer to
>> them later in various requests.  We're literally sending around mega bytes
>> of data for no reason whatsoever, except lazy programmers I guess.
> 
> Indeed.
> 
> I was doing some tests in VS Code with omnipascal; The Omnipascal LSP server 
> process takes 100% cpu.
> No surprises there

I've been talking to the LSP people at ST and they tell me it's really common 
for servers to be written in JavaScript because it's easily supported within 
VSCode's architecture (which Electron I'm sure you know). They may have written 
the thing in JavaScript for all I know. That's a problem right there as far as 
performance is concerned.

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] BSON formatter

2020-05-07 Thread Andreas Schneider

Am 2020-05-07 15:26, schrieb Ryan Joseph via fpc-pascal:

The amount of redundant information being sent around is ridiculous.
Mainly, the spec gives no way for the client to cache results and
refer to them later in various requests. We're literally sending
around mega bytes of data for no reason whatsoever, except lazy
programmers I guess.

Computers just keep getting slower and slower sometimes it feels...


That's the normal approach now. Why should you optimize anything if
you can simply buy better hardware? So I end up with a machine ten
times as fast as a few years ago and still cannot run much more in
parallel than back then, because even calendar apps are now written
with a full browser stack (looking at electron here).

As someone who still is happy when a GUI is a statically compiled
app that is < 10MB and doesn't take more than that as memory when
starting up, I am disgusted by the current "state of the art"
development. It's no longer an art.

(I am even more pissed off about this on my smartphone. Why does
a messenger app have to be 100 MB in size?! We had whole operating
systems in just 1% of that size. Even a full oracle database is
just around 30 MB if you strip away the java based management
console stuff ... and that thing is a feature monster for data
management.)



--
Andreas
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] BSON formatter

2020-05-07 Thread Michael Van Canneyt



On Thu, 7 May 2020, Ryan Joseph via fpc-pascal wrote:





On May 7, 2020, at 4:44 PM, Michael Van Canneyt  wrote:

I'm not even sure BSON will be accepted for LSP.


I talked to them already and they're not keen to add extensions to the
plugin so I'll probably give up on this route.  The spec from Microsoft
doesn't say anything about this either so maybe it's a bottle neck others
have hit.  Sending plain text is horribly stupid and Microsoft doesn't
seem to be taking performance seriously.  If they want to improve
performance there is other low hanging fruit but it requires Microsoft to
extend the protocol.


At least partial updates to a file should be there.
Sending the whole file at essentially every few keystrokes is just braindead...



The amount of redundant information being sent around is ridiculous. 
Mainly, the spec gives no way for the client to cache results and refer to

them later in various requests.  We're literally sending around mega bytes
of data for no reason whatsoever, except lazy programmers I guess.


Indeed.

I was doing some tests in VS Code with omnipascal; The Omnipascal LSP server 
process takes 100% cpu.
No surprises there




Computers just keep getting slower and slower sometimes it feels...


Welcome to IT in 2020: 
waiting, staring at a wait cursor... And more waiting  :-)


Like I said: 
This is probably one of the reasons for the current trend towards huge amounts of really small files.


Michael.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] BSON formatter

2020-05-07 Thread Ryan Joseph via fpc-pascal


> On May 7, 2020, at 4:44 PM, Michael Van Canneyt  
> wrote:
> 
> I'm not even sure BSON will be accepted for LSP.

I talked to them already and they're not keen to add extensions to the plugin 
so I'll probably give up on this route. The spec from Microsoft doesn't say 
anything about this either so maybe it's a bottle neck others have hit. Sending 
plain text is horribly stupid and Microsoft doesn't seem to be taking 
performance seriously. If they want to improve performance there is other low 
hanging fruit but it requires Microsoft to extend the protocol.

The amount of redundant information being sent around is ridiculous. Mainly, 
the spec gives no way for the client to cache results and refer to them later 
in various requests. We're literally sending around mega bytes of data for no 
reason whatsoever, except lazy programmers I guess.

Computers just keep getting slower and slower sometimes it feels...

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] BSON formatter

2020-05-07 Thread Michael Van Canneyt



On Thu, 7 May 2020, Andreas Schneider wrote:


Am 2020-05-07 08:40, schrieb Ryan Joseph via fpc-pascal:

Working on the language server it's become clear that JSON is going to
be a killer bottleneck, but that's what Microsoft decided to use. It's
almost a deal breaker just because of the sheer size of the data due
to JSON's verbose plain text formatting.

I've seen there is such thing as BSON
(https://en.wikipedia.org/wiki/BSON) which could be implemented over
JSON without disrupting the underlying architecture. Is there any BSON
formatters for the FPC JSON libraries? It's just serializing in a
different text format so it's probably pretty easy to implement but I
thought I would ask first.


I would go with ProtoBuf for something like this. If you really want to
be flexibel in the datastructure, look at msgpack/messagepack. Both
(protobuf and msgpack) are pretty good in benchmarks.


The LSP protocol requires JSON, so it's not an option to use something else.
I'm not even sure BSON will be accepted for LSP.

Michael.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] BSON formatter

2020-05-07 Thread Andreas Schneider

Am 2020-05-07 08:40, schrieb Ryan Joseph via fpc-pascal:

Working on the language server it's become clear that JSON is going to
be a killer bottleneck, but that's what Microsoft decided to use. It's
almost a deal breaker just because of the sheer size of the data due
to JSON's verbose plain text formatting.

I've seen there is such thing as BSON
(https://en.wikipedia.org/wiki/BSON) which could be implemented over
JSON without disrupting the underlying architecture. Is there any BSON
formatters for the FPC JSON libraries? It's just serializing in a
different text format so it's probably pretty easy to implement but I
thought I would ask first.


I would go with ProtoBuf for something like this. If you really want to
be flexibel in the datastructure, look at msgpack/messagepack. Both
(protobuf and msgpack) are pretty good in benchmarks.

--
Andreas
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] BSON formatter

2020-05-07 Thread Michael Van Canneyt



On Thu, 7 May 2020, Ryan Joseph via fpc-pascal wrote:


Working on the language server it's become clear that JSON is going to be a 
killer bottleneck, but that's what Microsoft decided to use. It's almost a deal 
breaker just because of the sheer size of the data due to JSON's verbose plain 
text formatting.

I've seen there is such thing as BSON (https://en.wikipedia.org/wiki/BSON)
which could be implemented over JSON without disrupting the underlying
architecture.  Is there any BSON formatters for the FPC JSON libraries? 
It's just serializing in a  different text format so it's probably pretty

easy to implement but I thought I would ask first.


There currently isn't but it has been on my todo list for ages. Patches welcome 
:)

Michael.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal