Some minor changes and comments after memory profiling

This commit is contained in:
Henrik Rydgård committed 2023-12-08 12:22:12 +01:00
1 parent 89c320fe2b
commit a22450320b
7 files changed
+23 -18

No files matched your search

+5 -4
View File
@@ -38,6 +38,10 @@ public:
delete [] storage_;
}
// Disallow copies.
FixedSizeQueue(FixedSizeQueue &other) = delete;
FixedSizeQueue& operator=(const FixedSizeQueue &other) = delete;
void clear() {
head_ = 0;
tail_ = 0;
@@ -149,6 +153,7 @@ public:
ERROR_LOG(COMMON, "Savestate failure: Incompatible queue size.");
return;
}
// TODO: This is quite wasteful, could just store the actual data. Would be slightly more complex though.
DoArray<T>(p, storage_, N);
Do(p, head_);
Do(p, tail_);
@@ -161,10 +166,6 @@ private:
int head_;
int tail_;
int count_; // sacrifice 4 bytes for a simpler implementation. may optimize away in the future.
// Make copy constructor private for now.
FixedSizeQueue(FixedSizeQueue &other);
FixedSizeQueue& operator=(const FixedSizeQueue &other);
};
+5 -5
View File
@@ -13,11 +13,6 @@
struct Atlas;
enum {
// Enough?
MAX_VERTS = 65536,
};
enum {
ALIGN_LEFT = 0,
ALIGN_RIGHT = 16,
@@ -186,6 +181,11 @@ public:
saturation_ = saturation;
}
enum {
// TODO: Can probably shrink this. Currently consumes 1.5MB.
MAX_VERTS = 65536,
};
private:
struct Vertex {
float x, y, z;
-1
View File
@@ -99,7 +99,6 @@ View::~View() {
// Could use unique_ptr, but then we have to include tween everywhere.
for (auto &tween : tweens_)
delete tween;
tweens_.clear();
}
void View::Update() {
+1
View File
@@ -35,6 +35,7 @@ const int AUDIO_ROUTING_SPEAKER_ON = 1;
int defaultRoutingMode = AUDIO_ROUTING_SPEAKER_ON;
int defaultRoutingVolMode = AUDIO_ROUTING_SPEAKER_ON;
// TODO: These are way oversized and together consume 4MB of memory.
extern FixedSizeQueue<s16, 32768 * 8> chanSampleQueues[PSP_AUDIO_CHANNEL_MAX + 1];
// The extra channel is for SRC/Output2/Vaudio.
+9 -6
View File
@@ -34,8 +34,7 @@ static void SplitCSVLine(const std::string_view str, std::vector<std::string_vie
result.push_back(finalColumn);
}
static std::vector<std::string_view> splitSV(std::string_view strv, char delim, bool removeWhiteSpace) {
std::vector<std::string_view> output;
static void splitSV(std::string_view strv, char delim, bool removeWhiteSpace, std::vector<std::string_view> *output) {
size_t first = 0;
while (first < strv.size()) {
const auto second = strv.find(delim, first);
@@ -47,13 +46,12 @@ static std::vector<std::string_view> splitSV(std::string_view strv, char delim,
if (removeWhiteSpace) {
line = StripSpaces(line);
}
output.emplace_back(line);
output->emplace_back(line);
}
if (second == std::string_view::npos)
break;
first = second + 1;
}
return output;
}
bool GameDB::LoadFromVFS(VFSInterface &vfs, const char *filename) {
@@ -64,9 +62,12 @@ bool GameDB::LoadFromVFS(VFSInterface &vfs, const char *filename) {
contents_ = std::string((const char *)data, size);
delete[] data;
// Split the string into views of each line, keeping the original.
std::vector<std::string_view> lines = splitSV(contents_, '\n', false);
const size_t RESERVE_COUNT = 2820; // ~ known current line count
// Split the string into views of each line, keeping the original.
std::vector<std::string_view> lines;
lines.reserve(RESERVE_COUNT);
splitSV(contents_, '\n', false, &lines);
SplitCSVLine(lines[0], columns_);
const size_t titleColumn = GetColumnIndex("Title");
@@ -76,6 +77,8 @@ bool GameDB::LoadFromVFS(VFSInterface &vfs, const char *filename) {
const size_t sizeColumn = GetColumnIndex("Size");
std::vector<std::string_view> items;
items.reserve(8);
lines_.reserve(RESERVE_COUNT);
for (size_t i = 1; i < lines.size(); i++) {
auto &lineString = lines[i];
SplitCSVLine(lineString, items);
+2 -1
View File
@@ -67,7 +67,8 @@ private:
void Clear(bool hard);
enum {
BUFSIZE = 44100,
// 0.5 ms buffer at 44.1 khz should be enough.
BUFSIZE = 22050,
};
std::mutex mutex_;
+1 -1
View File
@@ -764,7 +764,7 @@ void GameInfoCache::WaitUntilDone(std::shared_ptr<GameInfo> &info) {
std::shared_ptr<GameInfo> GameInfoCache::GetInfo(Draw::DrawContext *draw, const Path &gamePath, int wantFlags) {
std::shared_ptr<GameInfo> info;
std::string pathStr = gamePath.ToString();
const std::string &pathStr = gamePath.ToString();
auto iter = info_.find(pathStr);
if (iter != info_.end()) {