Files
hakorune/local_tests/memory_stress_test.nyash
Moe Charm ef7a0de3b0 feat: Prepare for code modularization and cleanup
- Archive old documentation and test files to `docs/archive/` and `local_tests/`.
- Remove various temporary and old files from the project root.
- Add `nekocode-rust` analysis tool and its output files (`nekocode/`, `.nekocode_sessions/`, `analysis.json`).
- Minor updates to `apps/chip8_nyash/chip8_emulator.nyash` and `local_tests` files.

This commit cleans up the repository and sets the stage for further code modularization efforts, particularly in the `src/interpreter` and `src/parser` modules, based on recent analysis.
2025-08-16 01:30:39 +09:00

182 lines
4.8 KiB
Plaintext

// Comprehensive Memory Stress Test - Built-in Box Operations
// Phase 8.7: Real-world Memory Management Testing
// Tests intensive Box method calls and memory allocation patterns
print("=== Phase 8.7 Memory Stress Test ===")
print("Testing intensive Box operations for memory management")
// Test 1: Intensive String Operations (Creating many StringBox objects)
print("Test 1: String Memory Stress")
local str_base
local result
local i
local temp_str
str_base = "Base"
result = ""
// Create 20 iterations of string concatenation (40 string objects)
i = 0
loop(i < 20) {
temp_str = str_base.concat("_").concat(i.toString())
result = result.concat(temp_str).concat(",")
i = i + 1
}
print("String concatenation result length:")
print(result.length())
// Test 2: Substring Memory Stress (Creating substring objects)
print("Test 2: Substring Memory Stress")
local long_string
local substr_count
local substr_result
long_string = "This_is_a_very_long_string_for_testing_memory_allocation_patterns"
substr_count = 0
substr_result = ""
// Extract 15 substrings (15 more string objects)
i = 0
loop(i < 15) {
temp_str = long_string.substring(i, i + 5)
substr_result = substr_result.concat(temp_str).concat("|")
substr_count = substr_count + 1
i = i + 1
}
print("Substring operations completed:")
print(substr_count)
print("Substring result length:")
print(substr_result.length())
// Test 3: ArrayBox Memory Stress (Creating arrays and accessing elements)
print("Test 3: ArrayBox Memory Stress")
local arr1
local arr2
local arr3
local arr_len
local element
// Create multiple ArrayBox objects
arr1 = new ArrayBox()
arr2 = new ArrayBox()
arr3 = new ArrayBox()
print("Created 3 ArrayBox objects")
// Test array length operations (multiple method calls)
arr_len = arr1.length()
print("Array 1 length:")
print(arr_len)
arr_len = arr2.length()
print("Array 2 length:")
print(arr_len)
arr_len = arr3.length()
print("Array 3 length:")
print(arr_len)
// Test 4: Mixed Operations Memory Stress
print("Test 4: Mixed Operations Memory Stress")
local operation_count
local mixed_result
local number_str
local bool_str
operation_count = 0
mixed_result = "Start"
// Perform 25 mixed operations (creating many temporary objects)
i = 0
loop(i < 25) {
// String operations
temp_str = "Item".concat(i.toString())
mixed_result = mixed_result.concat("_").concat(temp_str)
// Integer operations
number_str = (i * 2).toString()
mixed_result = mixed_result.concat("(").concat(number_str).concat(")")
// Boolean operations
bool_str = (i > 10).toString()
mixed_result = mixed_result.concat("[").concat(bool_str).concat("]")
operation_count = operation_count + 1
i = i + 1
}
print("Mixed operations completed:")
print(operation_count)
print("Mixed result length:")
print(mixed_result.length())
// Test 5: Rapid Object Creation/Disposal Pattern
print("Test 5: Rapid Object Creation Pattern")
local rapid_count
local rapid_result_len
rapid_count = 0
// Create and immediately use objects (tests garbage collection)
i = 0
loop(i < 30) {
// Each iteration creates multiple temporary objects
temp_str = "Rapid".concat(i.toString()).concat("_Test")
result = temp_str.substring(0, 10).concat("_End")
rapid_result_len = result.length()
rapid_count = rapid_count + 1
i = i + 1
}
print("Rapid object creation cycles:")
print(rapid_count)
print("Final rapid result length:")
print(rapid_result_len)
// Test 6: Nested Method Call Stress
print("Test 6: Nested Method Call Stress")
local nested_count
local nested_result
nested_count = 0
// Perform nested method calls (stress the call stack)
i = 0
loop(i < 15) {
// Multiple levels of method chaining
nested_result = "Start".concat("_").concat(i.toString()).concat("_Mid").concat("_").concat((i * 3).toString()).concat("_End")
temp_str = nested_result.substring(2, nested_result.length() - 2)
result = temp_str.concat("_Final").concat(i.toString())
nested_count = nested_count + 1
i = i + 1
}
print("Nested method call cycles:")
print(nested_count)
print("Final nested result length:")
print(result.length())
// Memory Test Summary
print("=== Memory Test Summary ===")
print("String operations: Extensive concatenation and substring")
print("Array operations: Multiple ArrayBox creation and access")
print("Mixed operations: Combined string/integer/boolean processing")
print("Rapid creation: High-frequency object allocation patterns")
print("Nested calls: Deep method call chains")
print("=== Test Complete ===")
// Calculate total operations estimate
local total_ops
total_ops = 20 + 15 + 3 + 25 + 30 + 15 // Sum of all loop iterations
print("Estimated total Box operations:")
print(total_ops)
print("Each operation created multiple temporary objects")
print("Memory management system successfully handled complex patterns!")