on master help sign in
add plan printing to bigrel to ensure that I am profiling what I think I am profiling
0e0c0b5AgentM
TutorialD/Interpreter/Base.hs+7
@@ -8,6 +8,8 @@ import ProjectM36.Base
8import qualified Data.Text as T
8import qualified Data.Text as T
9import qualified Data.List as L
9import qualified Data.List as L
10import qualified Data.Vector as V
10import qualified Data.Vector as V
11+import qualified Data.Text.IO as TIO
12+import System.IO
11
13
12lexer :: Token.TokenParser ()
14lexer :: Token.TokenParser ()
13lexer = Token.makeTokenParser tutD
15lexer = Token.makeTokenParser tutD
@@ -69,3 +71,8 @@ data TutorialDOperatorResult = QuitResult |
69 DisplayErrorResult StringType |
71 DisplayErrorResult StringType |
70 QuietSuccessResult
72 QuietSuccessResult
71
73
74+displayOpResult :: TutorialDOperatorResult -> IO ()
75+displayOpResult QuitResult = return ()
76+displayOpResult (DisplayResult out) = TIO.putStrLn out
77+displayOpResult (DisplayErrorResult err) = TIO.hPutStrLn stderr ("ERR: " `T.append` err)
78+displayOpResult QuietSuccessResult = return ()
TutorialD/Interpreter/RODatabaseContextOperator.hs+5
@@ -83,3 +83,8 @@ evalRODatabaseContextOp context (ShowPlan dbExpr) = do
83 plan = evalState (applyStaticDatabaseOptimization dbExpr) context
83 plan = evalState (applyStaticDatabaseOptimization dbExpr) context
84
84
85evalRODatabaseContextOp _ (Quit) = QuitResult
85evalRODatabaseContextOp _ (Quit) = QuitResult
86+
87+interpretRODatabaseContextOp :: DatabaseContext -> String -> TutorialDOperatorResult
88+interpretRODatabaseContextOp context tutdstring = case parse roDatabaseContextOperatorP "" tutdstring of
89+ Left err -> DisplayErrorResult (T.pack (show err))
90+ Right parsed -> evalRODatabaseContextOp context parsed
benchmark/bigrel.hs+4−8
@@ -4,7 +4,9 @@ import ProjectM36.Relation
4import ProjectM36.Tuple
4import ProjectM36.Tuple
5import ProjectM36.Relation.Show.CSV
5import ProjectM36.Relation.Show.CSV
6import ProjectM36.Relation.Show.HTML
6import ProjectM36.Relation.Show.HTML
7+import TutorialD.Interpreter.Base (displayOpResult)
7import TutorialD.Interpreter.DatabaseExpr (interpretDatabaseExpr)
8import TutorialD.Interpreter.DatabaseExpr (interpretDatabaseExpr)
9+import TutorialD.Interpreter.RODatabaseContextOperator (interpretRODatabaseContextOp)
8import ProjectM36.RelationalExpression
10import ProjectM36.RelationalExpression
9import qualified Data.HashSet as HS
11import qualified Data.HashSet as HS
10import qualified Data.ByteString.Lazy.Char8 as BS
12import qualified Data.ByteString.Lazy.Char8 as BS
@@ -42,14 +44,6 @@ main = do
42 --vectorMatrixRun
44 --vectorMatrixRun
43 --intmapMatrixRun
45 --intmapMatrixRun
44
46
45−matrixRestrictRun :: IO ()
46−matrixRestrictRun = do
47− case matrixRelation 100 1000000 of
48− Left err -> putStrLn (show err)
49− Right rel -> case restrict (\tuple -> atomForAttributeName "0" tuple == Right (IntAtom 5)) rel of
50− Left err -> putStrLn (show err)
51− Right rel -> dumpcsv rel
52−
53matrixRun :: BigrelArgs -> IO ()
47matrixRun :: BigrelArgs -> IO ()
54matrixRun (BigrelArgs attributeCount tupleCount tutd) = do
48matrixRun (BigrelArgs attributeCount tupleCount tutd) = do
55 case matrixRelation attributeCount tupleCount of
49 case matrixRelation attributeCount tupleCount of
@@ -60,6 +54,8 @@ matrixRun (BigrelArgs attributeCount tupleCount tutd) = do
60 let setx = Assign "x" (ExistingRelation rel)
54 let setx = Assign "x" (ExistingRelation rel)
61 context = execState (evalContextExpr setx) dateExamples
55 context = execState (evalContextExpr setx) dateExamples
62 interpreted = interpretDatabaseExpr context tutd
56 interpreted = interpretDatabaseExpr context tutd
57+ plan = interpretRODatabaseContextOp context $ ":showplan " ++ tutd
58+ displayOpResult plan
63 case interpreted of
59 case interpreted of
64 Right context' -> TIO.putStrLn $ relationAsHTML ((relationVariables context') M.! "x")
60 Right context' -> TIO.putStrLn $ relationAsHTML ((relationVariables context') M.! "x")
65 Left err -> hPutStrLn stderr (show err)
61 Left err -> hPutStrLn stderr (show err)