on master help sign in
add plan printing to bigrel to ensure that I am profiling what I think I am profiling
commit0e0c0b5cbbe8be38d567f682981395489b0e33f3 authorAgentM <agentm@themactionfaction.com> dateSun 7 Jun 2015, 22:53 (11 years ago) parentce6d74f
3 files changed+16−8
TutorialD/Interpreter/Base.hs+7 TutorialD/Interpreter/RODatabaseContextOperator.hs+5 benchmark/bigrel.hs+4−8
TutorialD/Interpreter/Base.hs+7
@@ -8,6 +8,8 @@ import ProjectM36.Base
88import qualified Data.Text as T
99import qualified Data.List as L
1010import qualified Data.Vector as V
11+import qualified Data.Text.IO as TIO
12+import System.IO
1113
1214lexer :: Token.TokenParser ()
1315lexer = Token.makeTokenParser tutD
@@ -69,3 +71,8 @@ data TutorialDOperatorResult = QuitResult |
6971 DisplayErrorResult StringType |
7072 QuietSuccessResult
7173
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
8383 plan = evalState (applyStaticDatabaseOptimization dbExpr) context
8484
8585evalRODatabaseContextOp _ (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
44import ProjectM36.Tuple
55import ProjectM36.Relation.Show.CSV
66import ProjectM36.Relation.Show.HTML
7+import TutorialD.Interpreter.Base (displayOpResult)
78import TutorialD.Interpreter.DatabaseExpr (interpretDatabaseExpr)
9+import TutorialD.Interpreter.RODatabaseContextOperator (interpretRODatabaseContextOp)
810import ProjectM36.RelationalExpression
911import qualified Data.HashSet as HS
1012import qualified Data.ByteString.Lazy.Char8 as BS
@@ -42,14 +44,6 @@ main = do
4244 --vectorMatrixRun
4345 --intmapMatrixRun
4446
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−
5347matrixRun :: BigrelArgs -> IO ()
5448matrixRun (BigrelArgs attributeCount tupleCount tutd) = do
5549 case matrixRelation attributeCount tupleCount of
@@ -60,6 +54,8 @@ matrixRun (BigrelArgs attributeCount tupleCount tutd) = do
6054 let setx = Assign "x" (ExistingRelation rel)
6155 context = execState (evalContextExpr setx) dateExamples
6256 interpreted = interpretDatabaseExpr context tutd
57+ plan = interpretRODatabaseContextOp context $ ":showplan " ++ tutd
58+ displayOpResult plan
6359 case interpreted of
6460 Right context' -> TIO.putStrLn $ relationAsHTML ((relationVariables context') M.! "x")
6561 Left err -> hPutStrLn stderr (show err)