Comments (6)
Since Lua strings need hash calculating when they are being created and immutable, creating them is slower. But they are very fast when being compared and indexed with. Actually Lua strings are fast enough. I created an TCP/IP stack mostly in Lua and it heavily depends on Lua strings, but it could generate more than 3000 IP frames per second on my RPi2.
The problems I guess we would meet:
- When Lua strings are used as table indexes, they are used as values, but userdatas would be used as references. This might make old Lua users feel confused. They have to be aware to convert buffers into Lua strings.
- Decoder-style stream demuxers heavily depend on Lua string pattern match APIs for line-text protocols. They would not benefit from this kind of buffers. If a raw find method is implemented, this problem would disappear.
- luajit could inline some string operations. If buffers are implemented in a foreign library, this optimize could not take place.
from luvi.
Is speed really a bottleneck using strings in a real use case? I also made a test http server that decodes the http protocol using lua string methods and it was able to handle insanely high speeds on my desktop computer.
from luvi.
Yes, I think lua string enough to handle plain text protocol,include HTTP,SMTP,POP.
But please think about to inline handle msgpack or SNMP binary based protocol.
Maybe string.pack and string.unpack come from lua5.3 will better solution. I prefer to string.pack/unpack than mutable string.
from luvi.
string.pack and string.unpack could be found in a C library called struct. There is also one msgpack implement for Lua you could found in msgpack homepage.
from luvi.
Combine string pack/unpack in luvi better than extern module.
from luvi.
Close this, #76
from luvi.
Related Issues (20)
- miss luv_ctx_t and luv_context in winsvc.c HOT 1
- Mac/Linux deploy failing HOT 3
- Termux/aarch64: Segfaults at 97% build progress HOT 18
- Consider using zig cc to make prebuilt binaries HOT 27
- Update to OpenSSL 1.1.1g HOT 2
- Luvi on arm HOT 4
- Error building lit with luvi HOT 4
- Install on raspbian HOT 2
- wolfssl openssl
- Build failure with custom LuaJIT (OpenResty fork) HOT 15
- Build failure on Apple Silicon HOT 8
- Example for a simple SSL-TCP-Server with luvi (not luvit) HOT 2
- CI deploy authorization failing
- travis-ci.org is dead
- "unprotected error in call to Lua API" with custom ARM binary HOT 8
- Installing on ARM64 (Ubuntu 20.04) HOT 1
- Build error (M1 mac) HOT 2
- "rex" should be "rex.pcre" HOT 1
- Build for Apple's arm64 processors HOT 2
- [string "bundle:main.lua"]:1: module 'weblit' not found: HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from luvi.