Performance of Web 2.0 (data transfer rate)

Hi there!

I’ve already posted this on the official forum, but I’m re-posting here too.

I’ve made a small test app to measure the file download speed of a Web 2.0 server, v2020r2.1
It just used HandleURL to serve a FolderItem to a whoever makes a GET request to a certain URL path.
Both server and web browsers are running in the same machine, no network in between.
The machine is an 8th gen i5 laptop running Windows 10.
I’ve launched up to 6 simultaneous download requests. They all maintain a stable 750-800kb/sec data transfer rate. Never more than that. CPU usage is at 0% and memory grows as expected.

And my question is: is this the best it can do?
Are there any limiting factors to this observed throughput?

Thanks!

Unless you have many instances of the app, each serving a single download, it dosnt matter how good is your hardware (No threads.)

Why dont you try this test with a B4J app to compare speeds? :smirk:

1 Like

I’ve done a comparison with Xojo Web 1.0 and I get 4,4MB/sec for each download there.
It’s the Web 2.0 framework :frowning:

I’m not ready to move away from Xojo, but if Web 2.0 doesn’t significantly improve within 2021, I’m afraid I will be forced to.
As much as I hate being dependent on Java, I will give B4J a try.

1 Like

I am not really talking about move away from Xojo as I said in TOF, Xojo itself has stated that Xojo sucks for file transfer (not using those words). and even in xojo words, you must use other solutions for that task (they recomend iis or apache) but you can use B4J while keeping Xojo for the front end.

I would recommend him to use B4J Banano for this task or, if it is a bigger portal solution there would also be ABmaterial. @Alwaysbusy is the best in Banano and ABmaterial here in this Forum. Maybe he will write something about that case. As far as I could test the Datatransfer is not prohibited by Software performance cause it is following the performance of the Java Script on the Client side and Java on the Server Side. There should not be anything slowing down the Server.

I’m not sure that testing file transfers locally is too meaningful, however I tried it with B4J jServer. No code is required to serve files. Just put them in the www folder.
The client creates 10 concurrent requests:

Sub AppStart (Form1 As Form, Args() As String)
	MainForm = Form1
	MainForm.RootPane.LoadLayout("Layout1")
	MainForm.Show
End Sub

Sub Button1_Click
	For i = 1 To 10
		DownloadFile
	Next
End Sub

Sub DownloadFile
	Dim j As HttpJob
	j.Initialize("", Me)
	Dim n As Long = DateTime.Now
	j.Download("http://127.0.0.1:51042/1.zip")
	Wait For (j) JobDone (j As HttpJob)
	If j.Success Then
		Dim time As Long = DateTime.Now - n
		Dim SizeInKB As Int = j.Response.ContentLength / 1024
		Log($"Total time: ${time}ms, Size: $1.0{SizeInKB}kb"$)
		Log($"Transfer rate: $1.0{SizeInKB / (time / 1000)} kb/s"$)
	End If
	j.Release
End Sub

The output is:

Total time: 1233ms, Size: 176,410kb
Transfer rate: 143,074 kb/s
Total time: 1278ms, Size: 176,410kb
Transfer rate: 138,036 kb/s
Total time: 1307ms, Size: 176,410kb
Transfer rate: 134,973 kb/s
Total time: 1314ms, Size: 176,410kb
Transfer rate: 134,254 kb/s
Total time: 1329ms, Size: 176,410kb
Transfer rate: 132,739 kb/s
Total time: 1344ms, Size: 176,410kb
Transfer rate: 131,257 kb/s
Total time: 1359ms, Size: 176,410kb
Transfer rate: 129,809 kb/s
Total time: 1374ms, Size: 176,410kb
Transfer rate: 128,392 kb/s
Total time: 1394ms, Size: 176,410kb
Transfer rate: 126,549 kb/s
Total time: 1415ms, Size: 176,410kb
Transfer rate: 124,671 kb/s
3 Likes

I’ve done the test with similar results.
Xojo, even at its best, cannot compete with that.
I think it’s time to stop delaying the inevitable and start the process of migrating away from Xojo :frowning:

1 Like

It is like it is. Xojo has a great concept and great ideas but…there are problems which are never solved.
Your problem is only there because of xojo handling of downloads. That makes it even harder cause there is no real server in background like it is when using b4j.
But sometimes programming in xojo is less complex from some reasons and therefore you’ll find many people which appreciate that

1 Like

Xojo forced us info migrating to PHP. It took me way to long to see the writing on the wall.

Xojo says they care and says they don’t ‘ship until it’s ready’ but when I see their actions, they don’t. If they cared they would not ‘ship when it’s pre-beta’.

If Xojo cared, they’d take these issues seriously. Instead they delete posts, delete threads, and ban ( or threaten to ) long time users.

Nothing is going to change. Xojo has decided to ditch Pro devs because they demand quality to be able to ship quality. There’s no way a Pro dev can turn straw into gold.

So, I looked and looked and looked and couldn’t find anything like Xojo. Their concept is EXACTLY what I want and need, but they just can’t deliver. It sucks.

Since I moved to PHP, I haven’t encountered a bug, except for my own bugs. :slight_smile:

Don’t be afraid of php. Start by hand coding in HTML, CSS, and Javascript. You’re probably already doing that to work around Xojo’s bugs… Once you have something working, you can use PHP to write the HTML, CSS, and Javascript for you. :slight_smile:

3 Likes

And, as a small hint, I use for PHP the IDE from Jetbrains (I own also intelliJ as all product pack so—). Also Netbeans has a nice IDE for PHP if it is only for Web. To write for Desktop you can choose between Xojo (costs a lot), B4J (for free) or Java with Netbeans(free), Eclipse (free) or Intellij (in community edition also free). For Web: I would prefere always Banano or Abmaterial.

For mobile: use still B4x IDE: B4A for Android Development, B4I for IOS. You can reuse code and Design Data in many cases. It is reliable, stable, sustainable and has the needed consistency. (Do not forget for Mac u may need to use parallels, for Linux Virtualbox. In my eyes you will not loose any functionality you tant to have.

Thank you for your answers and the brief orientation in the world outside the Xojo ecosystem.
For what I’m trying to make, I will probably look into golang. I really need a compiled language for this one.